我正在尝试更新一个框架UIView
其中包含按钮和标签。我正在尝试更新它viewDidLayoutSubviews
(我也尝试过viewDidLoad
, viewWillAppear
, viewDidAppear
..)。我想更改视图的 y 位置 (origin.y)。
NSLogs 说我原来的 y 位置是 334,更改后是 100。但是,在我看来,位置没有改变。我已经检查了故事板中的视图是否已连接。我究竟做错了什么?
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CGRect theFrame = [self.bottomView frame];
NSLog(@"Y position bottomview: %f", self.bottomView.frame.origin.y);
if([[UIScreen mainScreen] bounds].size.height == 568) //iPhone 4inch
{
// NSLog(@"iphone5");
}
else{
// NSLog(@"iphone4");
theFrame .origin.y = 100;
}
self.bottomView.frame = theFrame;
NSLog(@"Y position bottomview after changing it: %f", self.bottomView.frame.origin.y);
[self.view layoutIfNeeded];
}
我也遇到过同样的问题。强制视图的超级视图的布局帮助了我:
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self.bottomView.superview setNeedsLayout];
[self.bottomView.superview layoutIfNeeded];
// Now modify bottomView's frame here
}
在斯威夫特中:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
bottomView.superview!.setNeedsLayout()
bottomView.superview!.layoutIfNeeded()
// Now modify bottomView's frame here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)