在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
并启用“自动布局”。
然后为image
和letter
添加约束到父对象的左,上,右,下边缘。
对于letter
标签,我还将“线”设置为0,将“内容压缩优先级”设置为1000(此处为fullscreen 1和fullscreen 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 =“应用程序截图”>
[背景image
和letter
标签似乎都已按预期增长。
但是标签的字体大小没有增加。
我已经四处搜寻,我认为我需要类似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” ...
C0]的[adjustsFontSizeToFitWidth
属性不会增大字体大小,仅用于缩小文档:根据文档,通常使用在font属性中指定的UILabel
绘制标签文本。但是,如果将此属性设置为font
,并且text属性中的文本超过标签的边界矩形,则接收方将开始减小字体大小,直到字符串适合或达到最小字体大小为止。
对于那些按标题来到这里并需要简单解决方案
您可以通过在情节提要板上设置自动收缩来完成所需的操作。当屏幕尺寸变小时,它将导致标签缩小到最小比例/显式尺寸。使它在最大的屏幕尺寸上运行,然后确保将其缩小到故事板预览中所需的尺寸。
您可以用自己的派生类替换Interface Builder中的类,并在那里进行大小调整。
示例:
字体不会自动增长。您应该自己通过IB或以编程方式增加/减少它。
还请确保将“换行”从“自动换行”设置为“截尾”。