Objective c 以编程方式创建的UILabel在旋转时不调整大小

Objective c 以编程方式创建的UILabel在旋转时不调整大小,objective-c,ios,xcode,uiview,uilabel,Objective C,Ios,Xcode,Uiview,Uilabel,以编程方式创建多行UILabel、将其添加到UIView并将该UIView添加到视图控制器以使其在方向更改时正确调整大小的最佳方法是什么 我看到类似的问题以前被问过很多次,但我没有找到任何解决我的特殊情况的方法。我有一个视图,我正试图添加一个多行UILabel。我提出的代码添加了标签,但它始终是横向模式下视图的宽度。旋转iPad会导致整个应用程序按预期旋转,但UILabel太宽。我确信答案就在.autoresizingMask或或.sizeToFit或.autoresizinsubviews属性

以编程方式创建多行UILabel、将其添加到UIView并将该UIView添加到视图控制器以使其在方向更改时正确调整大小的最佳方法是什么

我看到类似的问题以前被问过很多次,但我没有找到任何解决我的特殊情况的方法。我有一个视图,我正试图添加一个多行UILabel。我提出的代码添加了标签,但它始终是横向模式下视图的宽度。旋转iPad会导致整个应用程序按预期旋转,但UILabel太宽。我确信答案就在
.autoresizingMask
或.sizeToFit
.autoresizinsubviews
属性的组合中,但目前为止我还没有得到答案。这是我的代码

    UIViewController *vc = [[UIViewController alloc] init];
    vc.title = @"Welcome";

    // tbc is an instance of the tab bar controller that this view will go into
    UILabel *copy = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tbc.view.frame.size.width, MAXFLOAT)];
    NSString *copyText = @"Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Cras mattis consectetur purus sit amet fermentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Cras mattis consectetur purus sit amet fermentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.";
    UIFont *copyFont = [UIFont fontWithName:@"HoeflerText-Regular" size:20.0f];
    [copy setContentMode:UIViewContentModeScaleAspectFit];
    [copy setText:copyText];
    [copy setFont:copyFont];
    [copy setNumberOfLines:0];
    [copy setLineBreakMode:UILineBreakModeWordWrap];
    [copy setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleRightMargin];

    CGRect frame = copy.frame;
    frame.origin.x = 50;
    frame.origin.y = 100;
    frame.size.width = tbc.view.frame.size.width;
    frame.size.height = tbc.view.frame.size.height - 100;
    [copy setFrame:frame];
    [copy sizeToFit];

    UIView *content = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tbc.view.frame.size.width, vc.view.frame.size.height)];
    [content setAutoresizesSubviews:YES];
    [content addSubview:copy];
    [content sizeToFit];

    [vc.view setAutoresizesSubviews:YES];
    [vc.view setContentMode:UIViewContentModeScaleAspectFit];
    [vc.view addSubview:content];
正如我所说的,我确信我在
.autoresizeMask
中遗漏了一些东西,但我已经为此绞尽脑汁好几天了,所以我觉得我已经尝试了一切。如有任何建议,将不胜感激。

只需添加:

[content setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleRightMargin];
当你说:

setContentMode:
,您只是告诉视图如果边界发生变化,如何调整子视图的大小,但是,边界没有发生变化!!(由于缺少自动调整大小掩码标志)


如果vc是从NIB加载的viewController,请从NIB文件中仔细检查其视图的自动调整大小选项,否则,也将自动调整大小掩码标志添加到它。

哦,好肉汁,你真的只是在帧中使用了
MAXFLOAT
?不,绝对太小了。显然,iOS设备是((浮点)3.40282346638528860e+38)像素长的。同时将行数设置为零。这就是我缺少的。实际上,我必须删除
UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin
标志,但在父视图上设置
autoresizingMask
是主要问题。谢谢