0

我有一个 UIViewController 子类,它实例化一个 UIView 子类(我们称之为 viewA)。然后,viewA 有时会实例化另一个 UIView,我们称之为 viewB。

我希望 viewB 在视图控制器中居中。

我的问题是,“这样做的(正确)方法是什么?”

TIA

4

4 回答 4

1

有很多正确的方法,但也许最好的方法是使用 center-property:

[viewB setCenter: viewA.center];

或者,也许你需要使用..

[viewB setCenter: viewA.navigationController.center];
于 2013-04-13T22:41:12.453 回答
1

你必须小心,不要在一点点上结束。在非视网膜上,您需要满分,但对于视网膜,您可以在 0.5 上

一种方法是使用center然后调整

viewB.center = viewA.center;
viewB.frame = CGRectIntegral(viewB.frame);
于 2013-04-13T22:51:32.953 回答
0

I don't know a shorter way to do it than this one:

CGFloat x = CGRectGetMidX(self.view.bounds) - viewBWidth / 2;
CGFloat y = CGRectGetMidY(self.view.bounds) - viewBHeight / 2;

viewB.frame = CGRectMake(x,y,viewBWidth,viewBHeight);
于 2013-04-13T22:39:38.247 回答
0
viewB.frame = [MyClass centeredFrameForSize:desiredSize inRect:viewA.bounds];


+ (CGRect)centeredFrameForSize:(CGSize)size inRect:(CGRect)rect
{
    CGRect frame;
    frame.origin.x = rintf((rect.size.width - size.width)/2) + rect.origin.x;
    frame.origin.y = rintf((rect.size.height - size.height)/2) + rect.origin.y;
    frame.size = size;

    return frame;
}
于 2013-04-13T22:40:36.787 回答