另一个 UIView 的 UIView 子视图是 UIViewController 的子视图,在 iOS 中没有以 UIViewController 为中心
UIView subview of another UIView which is subview of UIViewController, not getting centered to UIViewController in iOS
我有一个 UIView
(名为 fwd2),它被添加为 UIView
(名为 fwd1)的子视图,而这个 UIView
被添加为 [=16] 的子视图=].And on the click of of proceed button on fwd1 the fwd2 view is opened.And I'm creating Uiview programitically .UIView
(fwd1) 是动态高度,UIView
(Fwd2) 是固定高度。现在我想要 UIView
(fwd1 & fwd2) 中心到 UIViewController
(LoginView Controller)。我的第一个 UIView
(fwd1) 以 UIViewController
为中心,但第二个 UIView
(fwd2) 没有居中。我用过
fwd1.center = self.view.center;
我也试过了
fwd1.center = [self.view convertPoint:self.view.center
fromView:self.view.superview];
我对第二个 UIView
即 fwd2 做了同样的事情,但我的第二个 UIView
即 fwd2 没有以 UIViewController
为中心。提前致谢。
你的fwd2是fwd1的子视图,fwd1是UIViewController的子视图。所以你需要如下
首先使 fwd1 与 UIViewController 居中对齐
[fwd1 setCenter:[[self view] center]];
然后让fwd2与fwd1居中对齐
[fwd2 setCenter:[fwd1 center]];
你把代码放对地方了吗?
这些代码通常应该出现在UIViewController的viewDidLayoutSubviews
中。
使 fwd1
在 UIViewController 中居中:
fwd1.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds));
然后让 fwd2
以 fwd1
为中心,这意味着 fwd2
也应该以 UIViewController 为中心(它们相对于 UIWindow 具有相同的中心)。
fwd2.center = CGPointMake(CGRectGetMidX(fwd1.bounds), CGRectGetMidY(fwd1.bounds));
编辑:
感谢评论,我更正了代码。
根据线程创建者的评论,解决了他的问题:
你在哪个函数中编写这段代码?你可能想试试
- viewWillLayoutSubviews
并且不要忘记调用 super 的实现。此外,首先您需要将 fwd1 居中,然后是 fwd2。
fwd1.center = [self.view convertPoint:self.view.center fromView:self.view.superview];
fwd2.center = [fwd1 convertPoint:fwd1.center fromView:fwd1.superview];
我有一个 UIView
(名为 fwd2),它被添加为 UIView
(名为 fwd1)的子视图,而这个 UIView
被添加为 [=16] 的子视图=].And on the click of of proceed button on fwd1 the fwd2 view is opened.And I'm creating Uiview programitically .UIView
(fwd1) 是动态高度,UIView
(Fwd2) 是固定高度。现在我想要 UIView
(fwd1 & fwd2) 中心到 UIViewController
(LoginView Controller)。我的第一个 UIView
(fwd1) 以 UIViewController
为中心,但第二个 UIView
(fwd2) 没有居中。我用过
fwd1.center = self.view.center;
我也试过了
fwd1.center = [self.view convertPoint:self.view.center
fromView:self.view.superview];
我对第二个 UIView
即 fwd2 做了同样的事情,但我的第二个 UIView
即 fwd2 没有以 UIViewController
为中心。提前致谢。
你的fwd2是fwd1的子视图,fwd1是UIViewController的子视图。所以你需要如下
首先使 fwd1 与 UIViewController 居中对齐
[fwd1 setCenter:[[self view] center]];
然后让fwd2与fwd1居中对齐
[fwd2 setCenter:[fwd1 center]];
你把代码放对地方了吗?
这些代码通常应该出现在UIViewController的viewDidLayoutSubviews
中。
使 fwd1
在 UIViewController 中居中:
fwd1.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds));
然后让 fwd2
以 fwd1
为中心,这意味着 fwd2
也应该以 UIViewController 为中心(它们相对于 UIWindow 具有相同的中心)。
fwd2.center = CGPointMake(CGRectGetMidX(fwd1.bounds), CGRectGetMidY(fwd1.bounds));
编辑: 感谢评论,我更正了代码。
根据线程创建者的评论,解决了他的问题:
你在哪个函数中编写这段代码?你可能想试试
- viewWillLayoutSubviews
并且不要忘记调用 super 的实现。此外,首先您需要将 fwd1 居中,然后是 fwd2。
fwd1.center = [self.view convertPoint:self.view.center fromView:self.view.superview];
fwd2.center = [fwd1 convertPoint:fwd1.center fromView:fwd1.superview];