UILabel,标签类,是iPhone界面最基本的控件,主要用来显示文本信息
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];
[self.view addSubview:label1];
上面两步就是使一个控件可见化的基本步骤,当然一些空间还要设置一下文本或者背景颜色与空间背景颜色不同才可以可以看到。
label1.backgroundColor = [UIColor redColor];
label1.textColor = [UIColor yellowColor];
label1.text = @"自动换行自动换行自动换行自动换行自动换行自动换行自动换行自动换行自动换行自动换行自动换行自动换行自动换行自动换行";
//设置UILabel的行数,设置为0时自动换行
label1.numberOfLines = 0;
label1.textAlignment = NSTextAlignmentCenter;
NS_ENUM NSTextAlignment {
NSTextAlignmentLeft 左对齐,默认
NSTextAlignmentRight 右对齐
NSTextAlignmentCenter 居中对齐
NSTextAlignmentJustified 在一个段落的最后一行自然对齐
NSTextAlignmentNatural 默认对齐方式
}
label1.lineBreakMode = NSLineBreakByTruncatingHead;
NS_ENUM NSLineBreakMode{
NSLineBreakByWordWrapping = 0, 以空格为边界,保留单词
NSLineBreakByCharWrapping, 保留整个字符
NSLineBreakByClipping, 简单剪裁,到边界为止
NSLineBreakByTruncatingHead, 按照"……文字"显示
NSLineBreakByTruncatingTail, 按照"文字……文字"显示
NSLineBreakByTruncatingMiddle 按照"文字……"显示
}
UILineBreakModeCharacterWrap,
以字符为单位换行,以字符为单位截断。
除了UILineBreakModeCharacterWrap,这几种换行方式都是以单词为单位换行,但是截断方式和省略形式不同
UILineBreakModeWordWrap = 0,
以单词为单位截断。
ILineBreakModeClip,
以单词为单位换行。以字符为单位截断。
UILineBreakModeHeadTruncation,
以单词为单位换行。如果是单行,则开始部分有省略号。如果是多行,则中间有省略号,省略号后面有4个字符。
UILineBreakModeTailTruncation,
以单词为单位换行。无论是单行还是多行,都是末尾有省略号。
UILineBreakModeMiddleTruncation,
以单词为单位换行。无论是单行还是多行,都是中间有省略号,省略号后面只有2个字符。
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];
label2.backgroundColor = [UIColor blackColor];
label2.textColor = [UIColor whiteColor];
label2.text = @"自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放自动缩放";
label2.font = [UIFont systemFontOfSize:30.0];
label2.numberOfLines = 0;
//自动调整字体大小
label2.adjustsFontSizeToFitWidth = YES;
//设置字体缩放的下限
label2.minimumScaleFactor = 0.5;
[self.view addSubview:label2];
boundingRectWithSize:<#(CGSize)#> attributes:<#(nullable NSDictionary<NSString *,id> *)#> context:<#(nullable NSStringDrawingContext *)#>
CGSizeMake 设置200宽,30号字体
attribute 构建一个字体大小的字典,这个字体的大
小要跟定义Label的大小一致
context 字符串绘图选项
UILabel *label3 = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];
label3.text = @"自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度自适应高度aldfjlasjflajflajslfj";
label3.backgroundColor = [UIColor blackColor];
label3.textColor = [UIColor whiteColor];
label3.numberOfLines = 0;
CGRect rect = [label3.text boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:label3.font} context:nil];
label3.frame = CGRectMake(50, 50, rect.size.width, rect.size.height);
[self.view addSubview:label3];
#import <Foundation/Foundation.h>
@interface WeiBoModel : NSObject
@property (nonatomic,strong)NSArray *statuses;
@property (nonatomic,strong)NSNumber *hasvisible;
@property (nonatomic,strong)NSNumber *previous_cursor;
@property (nonatomic,strong)NSNumber *next_cursor;
@property (nonatomic,strong)NSNumber *total_number;
@property (nonatomic,strong)NSNumber *interval;
- (id)initWithDictionary:(NSDictionary *)dictionary;
@end
- (id)initWithDictionary:(NSDictionary *)dictionary{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dictionary];
}
return self;
}
_label = label3;
写一个方法实现接受微博信息功能,以及在TouchBegan方法实现点击屏幕触发事件
- (void)dataTask{
//配置会话环境
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//创建任务对象
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://api.weibo.com/2/statuses/public_timeline.json?access_token=<#自己注册的token 值#>"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (!error) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
WeiBoModel *model = [[WeiBoModel alloc] initWithDictionary:dic];
NSString *text = [model.statuses[0] objectForKey:@"text"];
CGRect rect = [text boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_label.font} context:nil];
// _label.frame = CGRectMake(50, 50, rect.size.width, rect.size.height);
NSLog(@"%@",[NSValue valueWithCGRect:rect]);
dispatch_async(dispatch_get_main_queue(), ^{
_label.text = text;
_label.center = self.view.center;
_label.frame = rect;
});
}
}];
[dataTask resume];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[self dataTask];
}