从self.view.subviews移动所有UIView

时间:2013-10-25 05:35:06

标签: ios iphone objective-c uiview

我需要将所有self.view.subviews移动到容器中心并获得对iPhone 4的支持,我有这段代码但不能正常工作

iPhone 4

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

    if (IS_IPHONE_5) {

        NSLog(@"iphone 5");
    }else{

        NSLog(@"iphone 4");

        for (UIView *views in self.view.subviews) {

            CGRect frame = views.frame;
            frame.origin.x = 0; // new x coordinate
            frame.origin.y = 0; // new y coordinate
            views.frame = frame;


        }
    }

如何让每个对象的引用在容器中垂直居中?

在iPhone 5中完美运行

iPhone 5

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您需要调整每个子视图的起始x-coord,使其在屏幕上垂直居中。为此你需要应用数学,

for (UIView *subview in self.view.subviews) {
    CGRect frame = subview.frame;
    frame.origin.x = (screenWidth-frame.size.width)/2; // new x coordinate
    subview.frame = frame;
}

此处,screenWidth可以通过编程方式进行。 y-coord可以根据预期的外观和感觉进行调整,在子视图之间保持适当的垂直间隙。

另外,我觉得你不需要为iPhone5和iPhone单独处理这个&lt; 5,你只需要巧妙地编程。通常我会通过使用XIB创建它们来处理这些屏幕。它通过自动调整,自动布局等功能提供了很大的灵活性。

希望有所帮助!