gpt4 book ai didi

iphone - 如何在 iOS 中支持横向和纵向 View ?

转载 作者:行者123 更新时间:2023-11-28 20:29:17 25 4
gpt4 key购买 nike

在我的应用程序中,我支持单个 ViewController 的横向和纵向方向。我可以使用 Autoresize 来支持横向和纵向。但我需要制作不同于肖像的自定义风景。我对 iOS 很陌生。在谷歌和 SO 中搜索了很多但找不到解决方案。

我正在使用 Xcode 4.5 和 Storyboard制作 View 。

如何支持自定义横向和纵向 View ?

任何帮助将不胜感激。

最佳答案

在您的 .m 文件中试试这个:

- (void)updateLayoutForNewOrientation:(UIInterfaceOrientation)orientation
{
if (self.interfaceOrientation == UIInterfaceOrientationPortrait || self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
// Portrait

[object setFrame:CGRectMake(...)];

// Do the same for the rest of your objects
}

else
{
// Landscape

[object setFrame:CGRectMake(...)];

// Do the same for the rest of your objects
}
}

在该函数中,您已经为纵向和横向定义了 View 中每个对象的位置。

然后您在 viewWillAppear 中调用该函数以使其开始工作; View 确定开始时使用哪个方向:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[self updateLayoutForNewOrientation:self.interfaceOrientation];
}

此外,当你旋转时:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration 
{
[self updateLayoutForNewOrientation:self.interfaceOrientation];
}

如果我需要关于方向的更个性化的外观,这就是我采用的方法。希望这对你有用。

编辑:

如果您在一个 UIViewController 中使用两个 UIView,一个用于纵向,另一个用于横向,您可以将代码的第一部分更改为如下所示:

- (void)updateLayoutForNewOrientation:(UIInterfaceOrientation)orientation
{
if (self.interfaceOrientation == UIInterfaceOrientationPortrait || self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
// Portrait

portraitView.hidden = NO;
landscapeView.hidden = YES;
}

else
{
// Landscape

portraitView.hidden = YES;
landscapeView.hidden = NO;
}
}

此编辑样本与原始样本之间存在优缺点。在原始版本中,您必须为每个对象编写代码,在这个经过编辑的示例中,您只需要这段代码,但是,您基本上需要分配对象两次,一次用于纵向 View ,另一次用于横向 View 。

关于iphone - 如何在 iOS 中支持横向和纵向 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862091/

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