我有一个名为profile的视图,该视图在情节提要中采用(0,0,320,60)
大小,该视图占据了全角但高度为60,并且我试图在其中放置另一个名为rank的视图,该视图的中心是iPhone4s,5s,6s ,6它只应以我的观点为中心。
这是我尝试过的:
ranking.frame = CGRectMake(0, 0, 120, 60);
ranking.center = self.Profile.center;
当前代码未在所有设备中集中显示我的视图。我该怎么做才能动态地做到这一点?
最佳答案
您可以通过以下方法使用自动版式:
+ (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]];