iOS开发UI技巧篇 -- UILable

来源:互联网 发布:windows永久激活 编辑:程序博客网 时间:2024/05/22 07:44

1、iOS7 之后 UILable显示多行

    // 这个在某些场景下会出问题,没找到原因;    UILabel *lable = [[UILabel alloc] init];    lable.text = @"当您有新中奖订单,启动程序时通过动画提醒您。为避免过于频繁,高频彩不会提醒。";    [self.tableView addSubview: lable];    lable.backgroundColor = [UIColor colorWithRed:0.370 green:1.000 blue:0.940 alpha:1.000];    <span style="color:#FF6666;">lable.numberOfLines = 0;  // 设置任意行    CGSize size = [lable.text boundingRectWithSize:[UIScreen mainScreen].bounds.size            // 这指的是最大限制值,还可以采用 CGSizeMake(320, MAXFLOAT) 这种方式                options:NSStringDrawingUsesLineFragmentOrigin                     // 采用这种方式最合适                attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13]}  // 设置属性字典                context:nil].size;  // iOS7之后的方法                                  // 有context的地方一般设置为nil </span>//    [lable.text boundingRectWithSize:CGSizeMake(320, MAXFLOAT)        options:NSStringDrawingUsesLineFragmentOrigin        attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13]}        context:nil];    lable.frame = (CGRect){{contentX,contentY},size};; // 记住frame的高度不宜过大(更不能使用MAXFLOAT),否则会不显示。

网络上的:测试过没问题

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 300, 100)];       <span style="color:#FF6666;"> label.numberOfLines = 0;        label.lineBreakMode = NSLineBreakByWordWrapping;</span>        label.text = @"本店于十一期间特推出一系列优惠,限时限量敬请选购!沙发:钻石品质,首领风范!床垫:华贵典雅,彰显时尚!尊贵而不失奢华,典雅却不失自然!温馨和浪漫的生活,我们与你一同创造!";        <span style="color:#FF6666;">CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];</span>        label.frame =CGRectMake(0, 100, 300, <span style="color:#FF0000;">size.height</span>);        label.font = [UIFont systemFontOfSize:14];        [self.view addSubview:label];


0 0