为啥我的 UILabel 的 AutoLayout 不起作用

Posted

技术标签:

【中文标题】为啥我的 UILabel 的 AutoLayout 不起作用【英文标题】:Why my UILabel 's AutoLayout not working为什么我的 UILabel 的 AutoLayout 不起作用 【发布时间】:2015-06-26 08:39:43 【问题描述】:
    在情节提要中,我设置了视图控制器尺寸 iPhone3.5 英寸 使用 UILabel 添加约束

    UILabel.text 无法全部显示,所以我将视图控制器尺寸更改为 iPhone 4.7 英寸

    所以我点击 UIlabel 更新框架,自动布局工作,一切正常!这是 iPhone 4.7 英寸

    现在问题来了,当我在 iPhone 模拟器 iPhone 6 中运行时,自动布局不起作用,标签大小仅缩放,宽度不会变长。并且以下三个图像同时限制了宽度和高度32,但是在模拟器iPhone 6 图片尺寸看起来更大,为什么会这样?请帮帮我,很想

    不管是iphone6还是iphone5 iphon6+,这里代码输出320,为什么...

    -(void)viewDidLayoutSubviews [super viewDidLayoutSubviews]; NSLog(@"%f",self.view.frame.size.width);

【问题讨论】:

为了支持 iPhone 6/6+(并避免​​缩放模式),您必须明确提供设备的 LaunchScreen 文件/图像。 See this answer for more info @Alladinian 非常感谢你,它对我有用。 【参考方案1】:

根据您的问题,如果您不希望显示文本...那么您需要做的就是设置行数 = 0 并将换行模式设置为 自动换行

当您使用标签时,它不需要任何高度限制。

如果您正在使用大小类构建应用程序并使用 launchScreen.xib,那么您的标签将不会缩放,如果您使用的是启动图像,那么您需要所有初始屏幕图像的精确尺寸。

您可以在下面的网址中找到有关启动画面的大小。

https://***.com/a/26191308/4101371

我添加了带有约束和标签属性更改的视图图像。

结果将在设备和模拟器中以类似方式显示。

如果您不想在多行中显示标签,那么您可以设置 Auto Shrink(最小字体大小/最小字体比例)

希望它能帮助您解决问题。

【讨论】:

【参考方案2】:
    您不会忘记为箭头图像设置约束吗?

使用固定的高度/宽度设置尾随和顶部约束。

    将标签的“Autoshrink”属性设置为“Fixed font size”

这可以防止标签根据其框架改变字体大小

    为图像重新创建约束 - 它看起来像是固定到超级视图,因此在运行时它会缩放到超级视图的大小

希望这会有所帮助。

【讨论】:

以上是关于为啥我的 UILabel 的 AutoLayout 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UItableviewcell中的多行UIlabel使用Autolayout

如何使用 AutoLayout 使我的 UIImage 的高度与我的 UILabel 的固有高度相同?

UILabel Autolayout 宽度问题

使用 AutoLayout 在 UITableViewCell 中垂直居中多个 UILabel?

如何设置 UILabel 以通过 AutoLayout 包装 UIButton?

使用 AutoLayout 获得 UILabel Width 很热?