我有一个名为profile的视图,它在故事板中占用(0,0,320,60)
大小,它占据了全宽但高度为60的高度,我正在尝试在其中心放置另一个名为排名的视图,该设备是什么iPhone4s,5s,6s,6它应该只是我的视图并把它放在中心。
这是我试过的:
ranking.frame = CGRectMake(0, 0, 120, 60);
ranking.center = self.Profile.center;
当前代码并非在我的视图中居中所有设备。我该怎么做才能动态地做到这一点?
答案 0 :(得分:2)
您可以使用以下方法使用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或帮助程序类中添加上述方法。
在您的视图上使用AutoLayout之前,请务必将translatesAutoresizingMaskIntoConstraints
属性设置为false。
因此,如果ranking
是您的子视图而self.Profile
是您的超级视图,则可以执行以下操作。
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]];