Ios UILabel高度在viewDidLoad或VIEWWILL中不更改
我在Ios UILabel高度在viewDidLoad或VIEWWILL中不更改,ios,objective-c,Ios,Objective C,我在视图中调用了函数changeQuestionLabelHeight,它将出现,但高度不会改变。但是,在运行过程中,它在纵向位置时会发生变化,正如您可以看到的代码一样 下面是我的代码 - (void)viewDidLoad { [super viewDidLoad]; [self changeQuestionLabelHeight]; self.labelQuestion.adjustsFontSizeToFitWidth = YES; CGFloat fo
视图中调用了函数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旋转到横向:
然后我再次旋转到肖像:
标签设置为:
我最近遇到了同样的问题。尝试调用
视图中的任何标签高度更改。其他所有生命周期方法似乎调用得太早。您可以使用viewdilayoutsubview:
每次旋转设备时都会调用它
编辑:
我建议你查一下NSLayoutConstraints。
这就是我使用的约束条件。(由xcode自动生成)
注意:我没有花时间去修理按钮。他们有点搞砸了
另外,我将UILabel的行数设置为0,换行符设置为word wrap
删除所有这些代码,并使用类似以下内容:
-(void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
CGRect newFrame = self.labelQuestion.frame;
newFrame.size.height = 250;
self.labelQuestion.frame = newFrame;
}
如果您需要在布局期间执行任何特定于方向的操作,您可以检查self.interface-orientation
哦,是的。。。。。最后我把它修好了,宝贝。
您只需单击标签,然后选择编辑器->锁定->底部空间到Superview,瞧!!我在和我女儿在公寓洗澡时想出了这个解决办法
希望这个答案能帮助面临同样问题的人
干杯,
Mark Thien标签的框架第一次设置在哪里?标签的框架始终位于顶部,因为您可以看到第一张图片,但它的高度较低,这就是为什么我想在其上再添加250个,以填充未使用的空间。一旦它填满了未使用的空间,它将看起来像上面的第三张图片。我改为换行,部分文字(“今天很棒”)消失了。你是否也将行数改为0?