ios - 在另一个 View 中居中 View

标签 ios objective-c

我有一个名为 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/

相关文章:

objective-c - 如何将 NSLevelIndicatorCell 重置为 0?

ios - iOS:不会设置NSMutableDictionary属性

iphone - 检测 iOS 应用程序是否在调试器中运行

ios - 在试飞中发布时推送通知不会到来

ios - cocos2d。对象类似于ccsprite但没有图片吗?

ios - OS X 10.11 beta 6 和 Xcode 问题

ios - 在 didAddAnnotation 中更改添加的 MKAnnotationView alpha 会影响屏幕上的所有 MKAnnotationView

IOS 视频播放器示例

objective-c - NSStackView 未正确布局 View

ios - 使用来自 url 的 uitableview 缓存 UIImage