我在viewWillAppear
中调用了函数changeQuestionLabelHeight,但高度不会改变。但是,在运行期间,它会在纵向位置发生变化,因为您可以看到代码。
以下是我的代码
- (void)viewDidLoad
{
[super viewDidLoad];
[self changeQuestionLabelHeight];
self.labelQuestion.adjustsFontSizeToFitWidth = YES;
CGFloat fontSize = self.labelQuestion.font.pointSize;
self.labelQuestion.minimumScaleFactor = 8.0/fontSize;
self.labelQuestion.numberOfLines = 0;
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(deviceOrientationDidChangeNotification:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
- (void)deviceOrientationDidChangeNotification:(NSNotification*)note
{
[self changeQuestionLabelHeight];
}
- (void) changeQuestionLabelHeight{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
CGRect newFrame = self.labelQuestion.frame;
switch (orientation)
{
case UIDeviceOrientationPortrait:
newFrame.size.height = self.labelQuestion.frame.size.height + 250;
self.labelQuestion.frame = newFrame;
break;
case UIDeviceOrientationPortraitUpsideDown:
newFrame.size.height = self.labelQuestion.frame.size.height + 250;
self.labelQuestion.frame = newFrame;
break;
default:
break;
}
}
加载viewController后的示例:
加载后我将iPad旋转到横向:
然后我再次轮换成肖像:
标签设置为:
答案 0 :(得分:1)
我最近遇到了同样的问题。尝试在viewDidAppear
中调用任何标签高度更改。其他所有生命周期方法似乎都太早了。
答案 1 :(得分:1)
您可以使用viewDidLayoutSubview:
每次旋转设备时都会调用它
编辑:
我建议你查找NSLayoutConstraints。 这是我使用的约束。 (由xcode自动生成) 注意:我没有花时间修理按钮。他们有点搞砸了。
另外,我将UILabel的行数设置为0,并将换行设置为自动换行。
答案 2 :(得分:1)
删除所有代码并使用以下内容:
-(void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
CGRect newFrame = self.labelQuestion.frame;
newFrame.size.height = 250;
self.labelQuestion.frame = newFrame;
}
如果您需要在布局期间执行任何与方向相关的操作,可以查看self.interfaceOrientation
答案 3 :(得分:-1)
哦是啊.....终于我得到了修理宝贝。 您只需点击标签并选择编辑器 - > Pin - >超级视图的底部空间和瞧!我找到了这个解决方案,同时和我的女孩在她的公寓里洗澡。
希望这个答案可以帮助那些面临同样问题的人。
干杯, Mark Thien