在一个简单的 iPhone 应用程序中,我通过viewDidLoad中的以下代码显示一个字母图块(UIView
带有图像和 2 个标签的自定义):
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
.
因此,在 Xcode 5.1 Interface Builder 中,我打开DraggedTile.xib
并启用“自动布局”。
然后对于image
和letter
我添加约束到父级的左、上、右、下边缘。
对于letter
标签,我还将“Lines”设置为 0,将“Content Compression Resistance Priority”设置为 1000(此处为fullscreen 1和fullscreen 2):
然后我修改代码以使用更大的宽度和高度:
tile.frame = CGRectMake(10 + arc4random_uniform(100),
10 + arc4random_uniform(100),
2 * kWidth,
2 * kHeight);
结果如下:
背景image
和letter
标签似乎都按预期增长。
但是标签的字体大小并没有增加。
我四处搜索,我认为我需要类似tile.letter.adjustsFontSizeToFitWidth = YES
. 但同时我不能在“自动布局”开启的情况下使用它......
所以我的问题是“界面生成器”中是否有任何选项可以使字体大小也增加?
更新:
我已经尝试过 ismailgulek 的建议,即在 Interface Builder 和代码 tile.letter.adjustsFontSizeToFitWidth = YES
中将字体大小设置为 200 ,它看起来很有希望(这里是fullscreen):
但我现在遇到的问题是我letter.bottom
在 Interface Builder 中将 40px 设置为约束。但是如果我需要更大的瓷砖框架怎么办?有没有办法在该约束中使用百分比而不是绝对像素值?
另一个问题是是否可以adjustsFontSizeToFitWidth
在 Interface Builder 中设置某处,或者我是否必须为此使用源代码?我尝试向“用户定义的运行时属性”添加一个键 - 但随后应用程序在运行时崩溃: