Iphone 使用sizeThatFits:和SizeThatFit与UILabel的正确方法?

Iphone 使用sizeThatFits:和SizeThatFit与UILabel的正确方法?,iphone,resize,uilabel,sizetofit,Iphone,Resize,Uilabel,Sizetofit,目前,我已经使用[aString sizeWithFont:constrainedToSize:lineBreakMode:]正确调整了标签的大小,但我在设备中引入了旋转,并且具有灵活的宽度和高度,这导致我的UILabel以拉伸宽度的方式(因为它是相对于主视图设置的)但不能通过收缩高度来补偿额外的空间 在我问的另一个问题中,我被告知使用sizeToFit和/或sizeThatFits:,但我在互联网上找不到任何有用的资源来告诉我如何正确使用,我所做的试验会导致非理性行为 简而言之,假设我有这样一

目前,我已经使用[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
使其动态化

多谢各位


Tom

在屏幕旋转后,您是否尝试过重置标签的框架?在以下位置检查接口方向的值:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
然后,在didRotateFromInterfaceOrientation内为每个视图模式相应地设置标签的框架

以下是根据字符串长度调整标签框大小的示例: