我有一个名为 profile 的 View ,它在 Storyboard中采用 (0,0,320,60)
大小,它采用全宽但 60 高度,我试图在其中放置另一个名为 ranking 的 View 在中心,无论设备是 iPhone4s、5s、6s、6,它都应该采用我的观点并将其放在中心。
这是我尝试过的:
ranking.frame = CGRectMake(0, 0, 120, 60);
ranking.center = self.Profile.center;
当前代码未在所有设备中将我的 View 居中。我该怎么做才能动态地做到这一点?
最佳答案
您可以通过以下方法使用 AutoLayout:
+ (void)centerView:(UIView *)view inContainerView:(UIView *)containerView withSuperView:(UIView *)superView
{
[superView addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];
[superView addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]];
}
您可以在 ViewController 或辅助类中添加上述方法。
在您的 View 上使用 AutoLayout 之前,请记住将 translatesAutoresizingMaskIntoConstraints
属性设置为 false。
因此,如果 ranking
是您的 subview 并且 self.Profile
是您的 superView,您可以执行以下操作。
UIView *ranking = [[UIView alloc] init];
ranking.translatesAutoresizingMaskIntoConstraints = false;
[self.Profile addSubview:ranking];
[[self class] centerView:ranking inContainerView:self.Profile withSuperView:self.Profile];
[self.Profile addConstraint:[NSLayoutConstraint constraintWithItem:ranking attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:120]];
[self.Profile addConstraint:[NSLayoutConstraint constraintWithItem:ranking attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:60]];
关于ios - 在另一个 View 中居中 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33592635/