Ale*_*ber 24 interface-builder uilabel ios sizetofit
在一个简单的iPhone应用程序中,我UIView通过viewDidLoad中的以下代码显示一个字母图块(自定义图像和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];
Run Code Online (Sandbox Code Playgroud)
这工作没问题,但我想让字母瓷砖增长 - 当我提供更大的宽度和高度参数CGRectMake.
所以在Xcode 5.1 Interface Builder中我打开DraggedTile.xib并启用"Auto Layout".
然后为我image和letter我添加约束到父,左,上,右,下边缘.
对于letter标签,我还将"Lines"设置为0,将"Content Compression Resistance Priority"设置为1000(此处为全屏1和全屏2):


然后我修改代码以使用更大的宽度和高度:
tile.frame = CGRectMake(10 + arc4random_uniform(100),
10 + arc4random_uniform(100),
2 * kWidth,
2 * kHeight);
Run Code Online (Sandbox Code Playgroud)
结果如下:

背景image和letter标签似乎都按预期增长.
但是标签的字体大小没有增长.
我四处寻找,我认为我需要类似的东西tile.letter.adjustsFontSizeToFitWidth = YES.但与此同时我无法使用"自动布局"...
所以我的问题是,如果"Interface Builder"中有任何选项可以使字体大小增加吗?
更新:
我已经尝试过ismailgulek的建议,在Interface Builder和代码 中将字体大小设置为200,tile.letter.adjustsFontSizeToFitWidth = YES看起来很有前景(这里是全屏):

但我现在遇到的问题是我已将40px设置为letter.bottomInterface Builder中的约束.但是,如果我需要更大的瓷砖框架怎么办?有没有办法在该约束中使用百分比而不是绝对像素值?
另一个问题是,是否可以adjustsFontSizeToFitWidth在Interface Builder中设置某个位置,或者我是否必须使用源代码?我尝试在"用户定义的运行时属性"中添加一个键 - 但随后应用程序在运行时崩溃:

小智 27
adjustsFontSizeToFitWidthUILabel不会长大字体大小的属性,它只是根据文档减少:通常,标签文本是用font你在font属性中指定的方式绘制的.YES但是,如果将此属性设置为,并且text属性中的文本超出了标签的边界矩形,则接收器将开始缩小字体大小,直到字符串适合或达到最小字体大小.
但是如果你将字体大小设置得足够大(比如200)并设置adjustsFontSizeToFitWidth为YES,我认为你会得到有趣的有价值的结果.
并且不要忘记设置Baseline为Align Centers,否则您的文本可能无法正常显示.
请告知我们您的结果.
ish*_*hak 14
对于那些来到这里的人来说,需要一个简单的解决方案(经过数小时的调查):
问题示例:如果您使用自动布局并将UILabel高度设置为与屏幕高度成比例,则您将获得一个低于iPhone(横向)和iPad高的帧.如何自动调整字体高度?
解决方案:在Interface Builder中,
这将导致字体自动增加到当前高度.
| 归档时间: |
|
| 查看次数: |
29872 次 |
| 最近记录: |