我有一个 UIViewController 子类,它实例化一个 UIView 子类(我们称之为 viewA)。然后,viewA 有时会实例化另一个 UIView,我们称之为 viewB。
我希望 viewB 在视图控制器中居中。
我的问题是,“这样做的(正确)方法是什么?”
TIA
我有一个 UIViewController 子类,它实例化一个 UIView 子类(我们称之为 viewA)。然后,viewA 有时会实例化另一个 UIView,我们称之为 viewB。
我希望 viewB 在视图控制器中居中。
我的问题是,“这样做的(正确)方法是什么?”
TIA
有很多正确的方法,但也许最好的方法是使用 center-property:
[viewB setCenter: viewA.center];
或者,也许你需要使用..
[viewB setCenter: viewA.navigationController.center];
你必须小心,不要在一点点上结束。在非视网膜上,您需要满分,但对于视网膜,您可以在 0.5 上
一种方法是使用center
然后调整
viewB.center = viewA.center;
viewB.frame = CGRectIntegral(viewB.frame);
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);
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;
}