【问题标题】:UILabel with multiple lines and Auto Resizing Masks (UIViewAutoresizingMask)具有多行和自动调整大小掩码的 UILabel (UIViewAutoresizingMask)
【发布时间】:2015-11-24 15:27:27
【问题描述】:

我对包含分布在多行的文本的UILabels 有疑问。它嵌套在全屏 UIView 中,同时具有 autoresizing 掩码:

    view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;

我想在标签上添加 autoresizingMask

    label.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;

但问题是,这并不像我希望的那样工作。如果我这样做,在旋转屏幕(这会改变视图的大小)之后,标签的高度会更小,并且一些文本会被截断。 (它不显示整个文本)。如果我不添加UIViewAutoresizingFlexibleHeight,那么旋转后的标签在文本上方和下方有很大的差距(我不希望这样)。

我也尝试添加UIViewAutoresizingFlexibleBottomMargin,但这并没有帮助,因为仍然没有显示整个文本。

编辑: 我真的不认为 Autoresizing Masks 会解决这个问题 - > autoresizing Masks resize view 根据 superview 中大小的变化。这就是为什么高度不适合文本的原因。我能想到的唯一解决方案是在调整超级视图大小后重置UILabel 框架。如果我错了,我很乐意得到纠正。

【问题讨论】:

    标签: iphone ios objective-c uilabel autoresizingmask


    【解决方案1】:
     self.label.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
        self.label.numberOfLines = 10;
    

    【讨论】:

    • 感谢您的意见。不幸的是,这段代码对我不起作用。此外,我不知道文本会有多少行 -> 如果设备是纵向的,它会分散成更多的行,因为行会更窄。如果设备处于横向模式,则线条较长,因此需要的线条较少。
    【解决方案2】:

    你不能只在标签上使用 fitToSize(或任何版本)方法吗?请记住将行数设置为 0。

    self.label.numberOfLines = 0;
    [self.label fitToSize];
    

    编辑:它是 [self.label sizeToFit];

    【讨论】:

    • 不,因为我对UILabel的构建没有问题,当它显示在原始框架中时,就可以了。旋转屏幕后出现问题。但我几乎可以肯定,自动调整蒙版大小并不能解决这类问题,实际上会使情况变得更糟。可能唯一的解决方案是重写一些 UILabel 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多