单军华
2018-07-12 3e8437ae559487362fae3525beb79c534c213a51
screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Views/conversation/toolbar/EaseImageView.m
New file
@@ -0,0 +1,211 @@
/************************************************************
 *  * Hyphenate CONFIDENTIAL
 * __________________
 * Copyright (C) 2016 Hyphenate Inc. All rights reserved.
 *
 * NOTICE: All information contained herein is, and remains
 * the property of Hyphenate Inc.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Hyphenate Inc.
 */
#import "EaseImageView.h"
@interface EaseImageView()
@property (strong, nonatomic) UILabel *badgeView;
@property (nonatomic) NSLayoutConstraint *badgeWidthConstraint;
@end
@implementation EaseImageView
+ (void)initialize
{
    // UIAppearance Proxy Defaults
    EaseImageView *imageView = [self appearance];
    imageView.badgeBackgroudColor = [UIColor redColor];
    imageView.badgeTextColor = [UIColor whiteColor];
    imageView.badgeFont = [UIFont boldSystemFontOfSize:11];
    imageView.imageCornerRadius = 0;
    imageView.badgeSize = 20;
}
- (instancetype)init
{
    self = [super init];
    if (self) {
        [self _setupSubviews];
    }
    return self;
}
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self _setupSubviews];
    }
    return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self _setupSubviews];
    }
    return self;
}
#pragma mark - private
- (void)_setupSubviews
{
    if (_imageView == nil) {
        self.clipsToBounds = NO;
        self.backgroundColor = [UIColor clearColor];
        _imageView = [[UIImageView alloc] init];
        _imageView.translatesAutoresizingMaskIntoConstraints = NO;
        _imageView.layer.cornerRadius = _imageCornerRadius;
        _imageView.clipsToBounds = YES;
        _imageView.backgroundColor = [UIColor grayColor];
        [self addSubview:_imageView];
        _badgeView = [[UILabel alloc] init];
        _badgeView.translatesAutoresizingMaskIntoConstraints = NO;
        _badgeView.textAlignment = NSTextAlignmentCenter;
        _badgeView.textColor = _badgeTextColor;
        _badgeView.backgroundColor = _badgeBackgroudColor;
        _badgeView.font = _badgeFont;
        _badgeView.hidden = YES;
        _badgeView.layer.cornerRadius = _badgeSize / 2;
        _badgeView.clipsToBounds = YES;
        [self addSubview:_badgeView];
        [self _setupImageViewConstraint];
        [self _setupBadgeViewConstraint];
    }
}
#pragma mark - Setup Constraint
/*!
 @method
 @brief 设置头像约束
 @discussion
 @result
 */
- (void)_setupImageViewConstraint
{
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0]];
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.imageView attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0]];
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0]];
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0]];
}
/*!
 @method
 @brief 设置角标约束
 @discussion
 @result
 */
- (void)_setupBadgeViewConstraint
{
    self.badgeWidthConstraint = [NSLayoutConstraint constraintWithItem:self.badgeView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:self.badgeSize];
    [self addConstraint:self.badgeWidthConstraint];
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.badgeView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.badgeView attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0]];
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.badgeView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.imageView attribute:NSLayoutAttributeRight multiplier:1.0 constant:-self.imageCornerRadius + 3]];
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.badgeView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.imageView attribute:NSLayoutAttributeTop multiplier:1.0 constant:-3]];
}
- (void)_updateBadgeViewWidthConstraint
{
    [self removeConstraint:self.badgeWidthConstraint];
    self.badgeWidthConstraint = [NSLayoutConstraint constraintWithItem:self.badgeView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:self.badgeSize];
    [self addConstraint:self.badgeWidthConstraint];
}
#pragma mark - setter
- (void)setImage:(UIImage *)image
{
    _image = image;
    self.imageView.image = image;
}
- (void)setBadge:(NSInteger)badge
{
    _badge = badge;
    if (badge > 0) {
        self.badgeView.hidden = NO;
    }
    else{
        self.badgeView.hidden = YES;
    }
    if (badge > 99) {
        self.badgeView.text = @"N+";
    }
    else{
       self.badgeView.text = [NSString stringWithFormat:@"%ld", (long)_badge];
    }
}
- (void)setShowBadge:(BOOL)showBadge
{
    if (_showBadge != showBadge) {
        _showBadge = showBadge;
        self.badgeView.hidden = !_showBadge;
    }
}
- (void)setBadgeSize:(CGFloat)badgeSize
{
    if (_badgeSize != badgeSize) {
        _badgeSize = badgeSize;
        _badgeView.layer.cornerRadius = _badgeSize / 2;
        [self _updateBadgeViewWidthConstraint];
    }
}
- (void)setImageCornerRadius:(CGFloat)imageCornerRadius
{
    if (_imageCornerRadius != imageCornerRadius) {
        _imageCornerRadius = imageCornerRadius;
        self.imageView.layer.cornerRadius = _imageCornerRadius;
    }
}
- (void)setBadgeFont:(UIFont *)badgeFont
{
    _badgeFont = badgeFont;
    self.badgeView.font = badgeFont;
}
- (void)setBadgeTextColor:(UIColor *)badgeTextColor
{
    _badgeTextColor = badgeTextColor;
    self.badgeView.textColor = badgeTextColor;
}
- (void)setBadgeBackgroudColor:(UIColor *)badgeBackgroudColor
{
    _badgeBackgroudColor = badgeBackgroudColor;
    self.badgeView.backgroundColor = badgeBackgroudColor;
}
@end