UIImageView和窗口方向问题

时间:2011-07-19 14:46:01

标签: objective-c ipad uiimageview orientation nswindow

我想做什么

我想要的是应用程序顶部的imageview,我可以控制它的外观。例如,在主页中我不想要横幅,但在另一个视图中我做了。这意味着如果我想要拥有横幅,我必须向下移动整个视图。

我做了什么

以下是我的App代表。基本上,我将customTabBarController的视图向下移动了145 px。

if ([self.customTabBarController interfaceOrientation] == UIInterfaceOrientationPortrait) {

[customTabBarController.view setFrame:CGRectMake(0, 145, 768,1024-145)];
banner = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 768, 145)];

}
else if ([self.customTabBarController interfaceOrientation] == UIInterfaceOrientationPortraitUpsideDown) {

    [customTabBarController.view setFrame:CGRectMake(0,0, 768,1024-145)];
    banner = [[UIImageView alloc] initWithFrame:CGRectMake(0, 768+145, 768, 145)];

}

banner.image = image;

banner.hidden = NO;

[self.window addSubview:banner];

问题是什么

现在,我已经完成了纵向定位部分,但是当我尝试改变方向时,图像也会改变方向;这意味着当我将iPad改为横向和颠倒时,图像会转向侧面。基本上,它始终位于iPad的一侧。

有人可以帮忙吗?也欢迎对其他方法的建议。

编辑:我意识到我没有为横向方向实现setFrame,但我想首先完成它以颠倒纵向方向,但代码不起作用。应用程序在颠倒时的样子是横幅位于底部,图像是颠倒的。

3 个答案:

答案 0 :(得分:2)

请参阅“Orientation Problem while using insertSubview。”您通常不应将视图插入UIWindow本身。它不旋转。您应该将它们插入window.rootViewController.view或更低版本,以便自动获得正确的变换。否则,您需要使用“wrong orientation on UIViewController while animating it中提供的effectiveTransform等方法自行计算有效转换。”但是,只要可能,请使用根视图。它为你带来了所有的魔力。

答案 1 :(得分:1)

您是否考虑过将所有内容放入支持多个方向的UIViewController中?您可以使用自动调整遮罩在不同方向上获得正确的大小。

答案 2 :(得分:0)

您可以注册方向更改通知,并将CGTransform应用于您的横幅UIView