设为首页 加入收藏

TOP

Badgeva lueView(一)
2017-10-13 10:23:46 】 浏览:6578
Tags:Badgeva lueView

Badgeva lueView

 

效果

 

源码

https://github.com/YouXianMing/UI-Component-Collection 中的 Badgeva lueView

//
//  Badgeva lueView.h
//  BadgeView
//
//  Created by YouXianMing on 16/5/17.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSUInteger, BadgePosition) {
    
    BadgePositionCenterLeft,
    BadgePositionCenterRight,
    
    BadgePositionTopLeft,
    BadgePositionTopRight,
    
    BadgePositionBottomLeft,
    BadgePositionBottomRight,
};

@interface Badgeva lueView : UIView

/**
 *  bedge值
 */
@property (nonatomic, strong) NSString  *badgeva lue;

/**
 *  被附着的view
 */
@property (nonatomic, weak)   UIView    *contentView;

/**
 *  敏感字符增长宽度,默认值为4
 */
@property (nonatomic)  CGFloat        sensitiveTextWidth;

/**
 *  敏感增长宽度,默认为10
 */
@property (nonatomic)  CGFloat        sensitiveWidth;

/**
 *  固定高度,默认为20
 */
@property (nonatomic)  CGFloat        fixedHeight;

/**
 *  位置信息,默认为BadgePositionTopRight
 */
@property (nonatomic)  BadgePosition  position;

/**
 *  字体,默认为12
 */
@property (nonatomic, strong) UIFont    *font;

/**
 *  字体颜色,默认为白色
 */
@property (nonatomic, strong) UIColor   *textColor;

/**
 *  bedge颜色,默认为红色
 */
@property (nonatomic, strong) UIColor   *badgeColor;

/**
 *  开始生效
 */
- (void)makeEffect;

/**
 *  设置Badgeva lue
 *
 *  @param value    Badgeva lue
 *  @param animated 是否执行动画
 */
- (void)setBadgeva lue:(NSString *)value animated:(BOOL)animated;

@end
//
//  Badgeva lueView.m
//  BadgeView
//
//  Created by YouXianMing on 16/5/17.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import "Badgeva lueView.h"
#import "UIView+SetRect.h"

@interface Badgeva lueView ()

@property (nonatomic, strong) UILabel *label;

@end

@implementation Badgeva lueView

- (instancetype)init {
    
    if (self = [super init]) {
    
        self.sensitiveWidth     = 10;
        self.fixedHeight        = 20;
        self.sensitiveTextWidth = 4;
        self.position           = BadgePositionTopRight;
        self.font               = [UIFont systemFontOfSize:12.f];
        self.textColor          = [UIColor whiteColor];
        self.badgeColor         = [UIColor redColor];
    }
    
    return self;
}

- (void)makeEffect {

    // 标签
    self.label               = [[UILabel alloc] init];
    self.label.textColor     = self.textColor;
    self.label.textAlignment = NSTextAlignmentCenter;
    self.label.font          = self.font;
    [self addSubview:self.label];
    
    // 背景色
    self.backgroundColor     = self.badgeColor;
    self.width               = self.fixedHeight;
    self.height              = self.fixedHeight;
    self.layer.cornerRadius  = self.fixedHeight / 2.f;
    self.layer.masksToBounds = YES;
    
    [_contentView addSubview:self];
}

- (void)setBadgeva lue:(NSString *)badgeva lue animated:(BOOL)animated {

    _badgeva lue = badgeva lue;
    
    // 是否执行动画
    if (animated) {
        
        [UIView animateWithDuration:0.15f animations:^{
            
            self.alpha = badgeva lue.length == 0 ? 0 : 1;
        }];
        
    } else {
    
        self.alpha = badgeva lue.length == 0 ? 0 : 1;
    }
    
    // 如果值为空,则不执行后续操作
    if (badgeva lue.length <= 0) {
        
        return;
    }
    
    // 设置文本
    self.label.text = badgeva lue;
    [self.label sizeToFit];
    
    // 更新尺寸
    if (self.label.width + self.sensitiveTextWidth > self.width) {
        
        self.width += self.sensitiveWidth;
        
    } else {
        
        self.width = self.fixedHeight;
    }
    
    // 更新文本尺寸
    self.label.center = self.mid
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇侧滑栏效果的实现 下一篇【原】iOS学习之Socket

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目