我试过这个:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self adjustViewsForOrientation:toInterfaceOrientation];
}
- (void)adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
intervalLabel.center = CGPointMake(100, 100);
}
else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
intervalLabel.center = CGPointMake(200, 200);
}
}
但它没有用。但是,如果我这样做,它会移动它
- (IBAction)sup:(id)sender {
intervalLabel.center = CGPointMake(100, 100);
}
BTW标签是在故事板中制作的,并且在我的视图中被标记为加载并设置为(弱,非原子),按钮也是在故事板中制作的,只是标准的IBAction
答案 0 :(得分:0)
一个问题是你没有打电话:
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
然而,我猜测真正的问题是你正在使用自动布局(无论是有意还是无意),然后试图捣乱中心并没有真正发挥作用。
所以我的建议 - 如果您更喜欢使用"旧方法,请禁用自动布局"设置框架和中心(单击视觉设计器中的UIViewController并取消选中"使用Autolayout")或执行您尝试使用autolayout(意味着在旋转时添加/更改约束)。
取消选中"使用Autolayout"对于我在故事板编辑器中的UIViewController,以下内容对我有用:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
_intervalLabel.center = CGPointMake(0, 0);
} else {
_intervalLabel.center = CGPointMake(50, 50);
}
}
使用Autolayout的说法将是我的建议。