当我的设备更改方向时,我看到了我希望调整视图的日志事件,但是视图没有在视觉上更新。什么可能阻止此更新?下面是我收到方向通知更改时正在运行的代码。
- (void)interfaceOrientationDidChangeNotification:(NSNotification*)note
{
UIInterfaceOrientation currentOrientation = [UIApplication sharedApplication].statusBarOrientation;
BOOL isLandscape;
NSLog(@"Original Frame Size: %@", NSStringFromCGRect(self.baseView.frame));
if((currentOrientation == UIInterfaceOrientationLandscapeLeft)
|| (currentOrientation == UIInterfaceOrientationLandscapeRight)){
isLandscape = YES;
[self.baseView setFrame:CGRectMake(100, 100, 310, 180)];
[self updateTextFontSize:14 andXPosition:70];
NSLog(@"In Landscape Mode Frame Size: %@", NSStringFromCGRect(self.baseView.frame));
}else{
NSLog(@"In portrait mode");
[self.baseView setFrame:CGRectMake(100, 100, 610, 480)];
[self updateTextFontSize:18 andXPosition:50];
NSLog(@"In portrait mode Frame Size: %@", NSStringFromCGRect(self.baseView.frame));
}
[self.view setNeedsLayout];
}
我已经创建了一个示例项目,说明https://github.com/propstm/ViewResizeTest
提供的问题答案 0 :(得分:1)
这是因为您正在使用自动布局。使用自动布局时,您无法直接更改某些内容的框架;这是自动布局的工作。如果你试试,自动布局就会出现并改回来。您需要更改约束。