无论iPad应用程序采用何种布局模式,为什么[UIScreen mainScreen].bounds.size.height
始终会返回1024?
我正在尝试根据布局模式动态生成自定义视图,我总是得到1024的高度?
+ (CGRect)rectForView {
NSLog(@"The height is %f", [UIScreen mainScreen].bounds.size.height );
return CGRectMake( 0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, (([UIScreen mainScreen].bounds.size.height ) - 100));
}
答案 0 :(得分:5)
以下是我采取的措施。
+ (CGRect)rectForView {
if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) {
return CGRectMake( 0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.height, (([UIScreen mainScreen].bounds.size.width ) - 100));
}
NSLog(@"The height is %f", [UIScreen mainScreen].bounds.size.height );
return CGRectMake( 0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, (([UIScreen mainScreen].bounds.size.height ) - 100));
}
答案 1 :(得分:4)
这是边界的正确功能,我相信它会在启动方向上返回屏幕大小。您需要查看viewController或导航控制器,以获得相应尺寸的框架,这取决于方向。
答案 2 :(得分:4)
它始终以纵向模式返回坐标。如果您有其他方向,则必须更改它。
UIScreen *screen = [UIScreen mainScreen];
CGRect screenRect = screen.bounds; // implicitly in Portrait orientation.
if (UIDeviceOrientationIsLandscape(orientation)) {
CGRect temp;
temp.size.width = screenRect.size.height;
temp.size.height = screenRect.size.width;
screenRect = temp;
}
以上代码直接取自OLGhostAlertView.m,这是一个免费的在线警报视图,但它可以让您了解如何获得协同坐标。