考虑一个必须与屏幕底部对齐并且其宽度必须填满屏幕的视图。
此外,视图的高度取决于方向。在纵向方向上,视图的高度必须为200px,在横向中,高度必须为100px。
在不假设父视图大小的情况下执行此操作的最佳方法是什么(即:不知道它是否有状态栏,可能还有标签栏等)?
这是我当前的代码,不起作用:
- (void)viewDidLoad
{
[super viewDidLoad];
myView = [[UIView alloc] init];
CGSize myViewSize = CGSizeMake(self.view.frame.size.width, 200);
// Align bottom
float myViewY = self.view.frame.origin.y + self.view.frame.size.height - myViewSize.height;
myView.frame = CGRectMake(0, myViewY, myViewSize.width, myViewSize.height);
myView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
myView.backgroundColor = [UIColor redColor];
[self.view addSubview:myView];
}
- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
BOOL landscape = UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
myView.frame = CGRectMake(myView.frame.origin.x, myView.frame.origin.y, myView.frame.size.width, landscape ? 100 : 200);
}
答案 0 :(得分:0)
尝试使用UIWindow对象,如下所示:
[[UIApplication sharedApplication] keyWindow].screen.applicationFrame.size.height
applicationFrame的Apple文档内容如下:
此属性包含屏幕边界减去状态栏占用的区域(如果可见)。使用此属性是检索应用程序初始窗口大小的推荐方法。矩形以点
指定