我在我的应用程序中使用视图大小来在代码中定位子视图。
例如:
self.view.bounds.size.height
此子视图必须在视图内外进行动画处理。
这在旧设备上运行得很好,现在我正在尝试支持iphone 5,并发现我仍然可以获得旧设备的高度。 除了这个动画视图之外的所有内容都适合iphone 5。
获得正确尺寸的唯一方法是,如果我改变xib中视图的大小,那么缺点是 如果我现在在iPhone 4上运行我的应用程序,则视图大小为4英寸视图大小。
这是什么问题? 或者这是应该的方式,我必须为iPhone 5创建一个额外的xib文件?
答案 0 :(得分:4)
好吧,答案如下:
与@mrwalker一样,请确保视图自动或以编程方式调整大小。
请注意,视图尚未在viedDidLoad
方法中调整大小。
(这是我的错误)
如果您需要调整大小的视图大小,请在viewWillAppear
中查看您的内容,视图的大小已经合适。
感谢@mrwalker和@AndyDev
答案 1 :(得分:3)
您需要确保为正在运行的设备调整视图大小。你可以:
如果您打算使用不同的布局(更多/更少的按钮等),我只会选择(1)。
您如何实现(2)取决于您使用的是iOS 6的自动布局还是旧的自动调整模型。两种方法都可以在实用程序中控制。 Xcode中的大小检查器,或以编程方式。
如果您有一个视图&视图控制器,允许视图自动调整大小到父窗口就足够了。
答案 2 :(得分:2)
我有一个类似的问题,我没有得到正确的高度,使用Autolayout / autoresize没有达到预期的效果。我使用以下代码来确定屏幕大小并根据此进行更改。
if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
CGSize result = [[UIScreen mainScreen] bounds].size;
CGFloat scale = [UIScreen mainScreen].scale;
result = CGSizeMake(result.width * scale, result.height * scale);
if(result.height == 1136){
// iPhone 5 (1136px height)
} else {
// Not iPhone 5
}
}