我可以在横向模式和纵向模式下将界面生成器用于我的字段的不同位置吗?(完全不同,所以我不能只使用布局属性)?
还是代码是唯一的方法?
谢谢
如果纵向和横向模式共享的字段相同,我会说去代码。如果在每种模式下都有不同的对象不是一个好主意。
你可以使用willRotateToInterfaceOrientation
方法。当您更改设备方向时,它会调用..
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
-(void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
{
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation))
{
[label setFrame:CGRectMake(20, 52, 728, 617)];
}
else
{
[label setFrame:CGRectMake(20, 52, 728, 617)];
}
}
您可以在界面生成器中保留两个 UIView,当用户旋转设备时,您可以根据方向隐藏一个并显示另一个。你能试试下面的代码行吗?
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
if(([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeLeft) || ([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeRight)){
self.viewLandscape.hidden = NO;
self.viewPortrait.hidden = YES;
}
else {
self.viewLandscape.hidden = YES;
self.viewPortrait.hidden = NO;
}
}
以下是您可以使用的方法。最佳方法在顶部
1。最好使用自动布局来调整视图。
2.自动布局 + 代码
3.仅代码。
4.您可以为您的 xib 创建两个视图,一个用于横向,一个用于纵向。并根据方向显示和隐藏。但是在这种情况下,您需要将所有纵向视图与横向视图(文本等属性)同步,反之亦然。这很容易维护,但是您必须为同步每个视图的属性而格外头疼。