使用YXHUD

  1. 云栖社区>
  2. 博客>
  3. 正文

使用YXHUD

游贤明 2016-04-18 10:27:54 浏览808
展开阅读全文

使用YXHUD

这是本人自己设计的一个类,但功能很不完善,先看看效果:

源码:

YXHUD.h 与 YXHUD.m

//
//  YXHUD.h
//  UILabel
//
//  Created by YouXianMing on 14-9-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface YXHUD : UIView

@property (nonatomic, strong) NSString            *showString;           // 普通文本
@property (nonatomic, strong) NSAttributedString  *showAttributedString; // 富文本
@property (nonatomic, assign) CGFloat              fixWidth;             // 固定的宽度
@property (nonatomic, assign) CGSize               gapSize;              // 间隙宽度
@property (nonatomic, assign) CGFloat              cornerRadius;         // 圆角

- (void)fix;

@end


//
//  YXHUD.m
//  UILabel
//
//  Created by YouXianMing on 14-9-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "YXHUD.h"

@interface YXHUD ()

@property (nonatomic, strong) UILabel  *textLabel;
@property (nonatomic, strong) UIView   *backedView;

@end

@implementation YXHUD

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        // backedView(背景view)
        _backedView = [UIView new];
        _backedView.backgroundColor = [UIColor blackColor];
        [self addSubview:_backedView];
     
        // textLabel(文字label)
        _textLabel               = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 0)];
        _textLabel.textColor     = [UIColor whiteColor];
        _textLabel.numberOfLines = 0; // 设置自动换行
        [_backedView addSubview:_textLabel];
    }
    return self;
}

#pragma mark - getter.setter方法

// 设置普通文本
@synthesize showString = _showString;
- (void)setShowString:(NSString *)showString
{
    _showString     = showString;
    _textLabel.text = showString;
}
- (NSString *)showString
{
    return _showString;
}

// 设置富文本
@synthesize showAttributedString = _showAttributedString;
- (void)setShowAttributedString:(NSAttributedString *)showAttributedString
{
    _showAttributedString     = showAttributedString;
    _textLabel.attributedText = showAttributedString;
}
- (NSAttributedString *)showAttributedString
{
    return _showAttributedString;
}

// 固定宽度
@synthesize fixWidth = _fixWidth;
- (void)setFixWidth:(CGFloat)fixWidth
{
    _textLabel.frame = CGRectMake(0, 0, fixWidth, 0);
    _fixWidth        = fixWidth;
}
- (CGFloat)fixWidth
{
    return _fixWidth;
}

// backedView的圆角
@synthesize cornerRadius = _cornerRadius;
- (void)setCornerRadius:(CGFloat)cornerRadius
{
    _cornerRadius = cornerRadius;
    _backedView.layer.cornerRadius = cornerRadius;
}
- (CGFloat)cornerRadius
{
    return _cornerRadius;
}

#pragma mark - 其他方法

// 计算出文本尺寸
- (CGRect)calculate
{
    [_textLabel sizeToFit];
    return _textLabel.bounds;
}

// 最终计算出尺寸
- (void)fix
{
    // 计算出文本的rect值
    CGRect rect       = [self calculate];
    rect.size.height += _gapSize.height;
    rect.size.width  += _gapSize.width;
    _backedView.frame = rect;
    _textLabel.center = _backedView.center;
    
    self.frame        = rect;
}

@end

使用时候的代码:(注:里面用到的富文本为本人自己所写的类
//
//  RootViewController.m
//  UILabel
//
//  Created by YouXianMing on 14-9-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "RootViewController.h"
#import "YXHUD.h"
#import "ConfigAttributedString.h"
#import "NSString+YX.h"

@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    

    YXHUD *hud = [YXHUD new];
    hud.fixWidth     = 200;                // 固定Label宽度为100
    hud.gapSize      = CGSizeMake(20, 20); // 间隙宽度为10
    hud.cornerRadius = 5.f;                // 圆角值为5
    
    
    NSString *str = @"Warnning:\n\nYouXianMing NoZuoNoDie";
    NSArray *sets = @[
                      // 全局设置
                      [ConfigAttributedString font:[UIFont systemFontOfSize:10.f]
                                             range:[str range]],
                      
                      // 局部设置
                      [ConfigAttributedString font:[UIFont fontWithName:@"HelveticaNeue-Thin" size:14.f]
                                             range:[@"Warnning:" rangeFrom:str]],
                      [ConfigAttributedString foregroundColor:[UIColor yellowColor]
                                                        range:[@"Warnning:" rangeFrom:str]],
                      [ConfigAttributedString foregroundColor:[UIColor redColor]
                                                        range:[@"YouXianMing" rangeFrom:str]]];
    
    
    NSLog(@"%@", [str createAttributedStringAndConfig:sets]);
    hud.showAttributedString = [str createAttributedStringAndConfig:sets];
    [hud fix];
    
    CGRect rect = hud.frame;
    rect.origin.x = 100;
    rect.origin.y = 100;
    hud.frame = rect;
    
    
    [self.view addSubview:hud];
}

@end

可以固定位置:

可以进行复杂的设置:

可以设置富文本:

不过还不是完全品......

网友评论

登录后评论
0/500
评论
游贤明
+ 关注