使字体与UILabel一起增长(通过自动版式调整大小-如何在Interface Builder中实现它?

问题描述 投票:24回答:6

a simple iPhone app中,通过UIView中的以下代码显示字母图块(带有图像和2个标签的自定义viewDidLoad:]

“应用程序截图”

DraggedTile *tile = [[[NSBundle mainBundle] loadNibNamed:@"DraggedTile"
                                                   owner:self
                                                 options:nil] firstObject];
tile.frame = CGRectMake(10 + arc4random_uniform(100),
                        10 + arc4random_uniform(100),
                        kWidth,
                        kHeight);
[self.view addSubview:tile];

这很好,但是我想增加字母瓦片-当我向CGRectMake提供更大的width和height参数时。

因此,在Xcode 5.1 Interface Builder中,我打开DraggedTile.xib并启用“自动布局”。

然后为imageletter添加约束到父对象的左,上,右,下边缘。

对于letter标签,我还将“线”设置为0,将“内容压缩优先级”设置为1000(此处为fullscreen 1fullscreen 2):

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9IMWlVbi5wbmcifQ==” alt =“ Xcode屏幕截图”>

“

然后我修改代码以使用更大的宽度和高度:

tile.frame = CGRectMake(10 + arc4random_uniform(100),
                        10 + arc4random_uniform(100),
                        2 * kWidth,
                        2 * kHeight);

这里是结果:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9ubmlzZS5wbmcifQ==” alt =“应用程序截图”>

[背景imageletter标签似乎都已按预期增长。

但是标签的字体大小没有增加。

我已经四处搜寻,我认为我需要类似tile.letter.adjustsFontSizeToFitWidth = YES的东西。但是同时我无法在“自动布局”处于启用状态时使用它...

[我的问题是“接口生成器”中是否有任何选项可以使字体大小也增大?

UPDATE:

[我尝试过ismailgulek的建议,在Interface Builder和in the code tile.letter.adjustsFontSizeToFitWidth = YES中将字体大小设置为200,它看起来很有希望(在这里fullscreen:]]]

“

但是我现在遇到的问题是,我已经在Interface Builder中将40px设置为letter.bottom约束。但是,如果我需要更大的瓷砖框架怎么办?在该约束条件下,有没有办法使用百分比而不是绝对像素值?

和另一个问题

是是否可以在Interface Builder中的某个位置设置adjustsFontSizeToFitWidth,还是我必须为此使用源代码?我尝试将密钥添加到“用户定义的运行时属性”-但是应用程序在运行时崩溃:

“

[在一个简单的iPhone应用程序中,我在viewDidLoad中通过以下代码显示了一个字母拼贴(带有图像和2个标签的自定义UIView:DragTile * tile = [[[NSBundle mainBundle] loadNibNamed:@“ DraggedTile” ...

ios interface-builder uilabel sizetofit
6个回答
27
投票

C0]的[adjustsFontSizeToFitWidth属性不会增大字体大小,仅用于缩小文档:根据文档,通常使用在font属性中指定的UILabel绘制标签文本。但是,如果将此属性设置为font,并且text属性中的文本超过标签的边界矩形,则接收方将开始减小字体大小,直到字符串适合或达到最小字体大小为止。


14
投票

对于那些按标题来到这里并需要简单解决方案


2
投票

您可以通过在情节提要板上设置自动收缩来完成所需的操作。当屏幕尺寸变小时,它将导致标签缩小到最小比例/显式尺寸。使它在最大的屏幕尺寸上运行,然后确保将其缩小到故事板预览中所需的尺寸。


1
投票

您可以用自己的派生类替换Interface Builder中的类,并在那里进行大小调整。

示例:


0
投票

字体不会自动增长。您应该自己通过IB或以编程方式增加/减少它。


0
投票

还请确保将“换行”从“自动换行”设置为“截尾”。

© www.soinside.com 2019 - 2024. All rights reserved.