gpt4 book ai didi

iphone - 有没有一种方法可以在 Interface Builder 中实际*视觉设计*双视​​图(横向 + 纵向)?

转载 作者:可可西里 更新时间:2023-11-01 04:42:52 25 4
gpt4 key购买 nike

我目前的设计要求在数据的纵向和横向 View 之间使用一些很酷的动画。数据表示相当复杂,因此在图形和数据元素之间,屏幕上可能同时显示大约 30 个按钮和标签。我已经创建了一个设计非常紧凑的界面……现在我正在布置横向 View 的元素。到目前为止,我发现这样做的唯一方法是在代码中实际布置横向 View ,例如:

-(void) positionViews {
UIInterfaceOrientation destOrientation = self.interfaceOrientation;
if (destOrientation == UIInterfaceOrientationPortrait || destOrientation == UIInterfaceOrientationPortraitUpsideDown) {
//---if rotating into PORTRAIT mode
timeBGbox.frame = CGRectMake(14, 88, 134, 14);
targetTime.frame = CGRectMake(0, 99, 150, 29);
energyBGbox.frame = CGRectMake(156, 88, 68, 14);
targetEnergy.frame = CGRectMake(154, 99, 70, 29);
speedBGbox.frame = CGRectMake(234, 88, 68, 14);
targetSpeed.frame = CGRectMake(226, 99, 48, 29);
speedLabel.frame = CGRectMake(264, 99, 40, 36);
} else {
//---if rotating to LANDSCAPE mode
timeBGbox.frame = CGRectMake(156, 12, 152, 14);
targetTime.frame = CGRectMake(160, 23, 150, 29);
energyBGbox.frame = CGRectMake(156, 50, 68, 14);
targetEnergy.frame = CGRectMake(154, 61, 70, 29);
speedBGbox.frame = CGRectMake(234, 50, 74, 14);
targetSpeed.frame = CGRectMake(228, 61, 48, 29);
speedLabel.frame = CGRectMake(269, 61, 40, 36);
}
}

这是一个艰苦的过程,需要多次试验才能完成我可以在 IB 中在几秒钟内完成的视觉效果。目前,当我在 IB 中的 View 之间切换,并在横向模式下手动移动元素时,在切换回纵向模式时,它们位于错误的位置。我尽可能创造性地使用了“ Spring 和支柱”,但我的大部分元素都需要超出 AutoSizing 范围的精确手动放置。

我的问题是:IB 中是否有切换模式允许使用可视化布局工具开发 View 的两个图形布局,或者数字代码是唯一的方法吗?

最佳答案

您可以在 nib 文件中创建任意数量的 View 。您可以将其中之一称为“纵向 View ”(例如,也连接到文件所有者的“ View ”导出的那个),并将其中之一称为“横向 View ”。在您的 UIViewController 类中将它们都定义为 socket :

@property (nonatomic, retain) IBOutlet UIView *portraitView;
@property (nonatomic, retain) IBOutlet UIView *landscapeView;

按照您的喜好布置 IB 中的字段。那么诀窍是你需要在你的头文件中加倍导出:

@property (nonatomic, retain) IBOutlet UIView *myLabel_portrait;
@property (nonatomic, retain) IBOutlet UIView *myLabel_landscape;

并且在您的代码中,您需要使两个版本保持最新。最好是在更新其中一个时同时更新它们。

那么自动旋转的代码就很简单了,只需:

if ( switchingToPortrait)
self.view = self.portraitView;
else
self.view = self.landscapeView;

关于iphone - 有没有一种方法可以在 Interface Builder 中实际*视觉设计*双视​​图(横向 + 纵向)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5181062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com