目前我使用[aString sizeWithFont:constrainedToSize:lineBreakMode:]正确调整了标签尺寸,但我已将旋转引入我的设备并具有灵活的宽度和高度,这导致我的UILabel拉伸宽度方式(因为它相对于主视图设置)但不是按高度收缩以补偿额外的空间。
在另一个问题中,我问我被告知要使用sizeToFit
和/或sizeThatFits:
但是我在互联网上找不到任何有用的资源,告诉我如何正确使用这个和试验我'完成导致非理性行为。
简而言之,我可以说我有这样的结构:
UIView *innerView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, self.view.frame.size.width-20, 0)];
[innerView setAutoresizingMask:*flexible width and height*]
[innerView setBackgroundColor:[UIColor redColor]];
[self.view addSubview:innerView];
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, innerView.frame.size.width-20, 0)];
[myLabel setAutoresizingMask:*flexible width and height*]
[myLabel setBackgroundColor:[UIColor blueColor]];
[myLabel setNumberOfLines:0];
[myLabel setLineBreakMode:UILineBreakModeWordWrap];
[innerView addSubview:myLabel];
这是一个简化版本(也是通过免责声明,这不是我的实际代码,我意识到这些元素会泄漏,其他一切......这只是一个例子,所以你可以看到结构)。
基本上我有这两个元素。现在轮换时,它们都会伸展以适应新的视图大小。我需要的是一种增加或减少高度以动态适应内容的方法。 [aString sizeWithFont...]
只是静态的。那么我如何使用sizeToFit
或sizeThatFits
来实现这种动态?
谢谢。
汤姆
答案 0 :(得分:2)
您是否尝试在屏幕旋转后重置标签的边框?在以下位置检查 interfaceOrientation 的值:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
然后,为 didRotateFromInterfaceOrientation 中的每个视图模式相应地设置标签的框架。
以下是调整字符串长度标签帧大小的示例:http://cocoamatic.blogspot.com/2010/08/uilabel-dynamic-sizing-based-on-string.html