zoukankan      html  css  js  c++  java
  • UILabel的多行显示

    来自:http://blog.csdn.net/shark0001/article/details/7007238

     

    1.N行完全自适应:
            UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 100, 21)];
            NSString *txt = @"dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
            testLabel.numberOfLines = 0; ///相当于不限制行数
            testLabel.text = txt;
    这样不行,还需要调用 [testLabel sizeToFit];


    2.限制在N行内自适应:
            UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 100, 21)];
            NSString *txt = @"dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
            testLabel.numberOfLines = 3;   ////限制在3行内自适应
            testLabel.text = txt;
         [testLabel sizeToFit];
    结果不起作用,全部在一行显示了。

    3.为了实现2的需求,需要这么做:
            CGSize maxSize = CGSizeMake(100, 21*3);
            UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 100, 21)];
            NSString *txt = @"dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
            CGSize labelSize = [txt sizeWithFont:testLabel.font constrainedToSize:maxSize lineBreakMode: UILineBreakModeTailTruncation];

            testLabel.frame = CGRectMake(testLabel.frame.origin.x, testLabel.frame.origin.y, labelSize.width, labelSize.height);
            testLabel.text = txt;

     

     

    THE END !

  • 相关阅读:
    dotnetcore3.1 WPF 实现多语言
    dotnetcore3.1 WPF 中使用依赖注入
    [svc]打通mysql主从同步
    [svc]glusterfs的简单部署
    [svc]inotify+rsync解决nfs单点问题
    [svc]rsync简单部署
    [svc]linux文件权限
    [svc]ssh批量分发key/批量用户管理
    [svc]NFS存储企业场景及nfs最佳实战探究
    [svc]mount命令及解决因/etc/fstab错误导致系统不能启动故障
  • 原文地址:https://www.cnblogs.com/xingchen/p/2532666.html
Copyright © 2011-2022 走看看