使用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
可以固定位置:
可以进行复杂的设置:
可以设置富文本:
不过还不是完全品......