我想做什么
我想要的是应用程序顶部的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,但我想首先完成它以颠倒纵向方向,但代码不起作用。应用程序在颠倒时的样子是横幅位于底部,图像是颠倒的。
答案 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