繁体   English   中英

如何水平居中 UIView?

[英]How can I horizontally center a UIView?

如何使用CGRectMake使UIView水平居中且距视图控制器顶部CGRectMake

var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260))
draggableView.center = center

斯威夫特 3;

subView.center.x = view.center.x

尝试:

let size = 260
let screenWidth = self.view.frame.size.width

let frame = CGRectMake((screenWidth / 2) - (size / 2), 30, size, size)
let draggableView = DraggableView(frame: frame)

self.view.addSubview(draggableView)

您不能在视图控制器中居中视图,因为视图控制器不是视图并且没有坐标系。

您可以将视图相对于另一个视图居中。 大概您希望将draggableView相对于视图控制器的视图居中。 假设self是视图控制器,并且draggableView将是视图控制器视图的直接子视图:

var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260))
self.view.addSubview(draggableView)
draggableView.center = self.view.center

尽管 Rob Mayoff 是正确的,但考虑将框架居中放置在viewWillLayoutSubviews 中可能是值得的,它会在设备旋转时调用。 您还可以使用center的属性center.xcenter.y根据轴对齐。 在这种情况下不需要调用 self 。

override func viewWillLayoutSubviews() {
    draggableView.center = view.center
}

我正在使用“ MMMaterialDesignSpinner ”库并在视图中心创建自定义活动指示器。 它工作正常,您可以更改自定义视图名称,如“DraggableView”。 我希望它对你有用。 此代码已添加到 swift 3 中的viewDidLoad函数中。

var loader = MMMaterialDesignSpinner()
let size:CGFloat = 40.0
let screenWidth = self.view.frame.size.width
let screenHeight = self.view.frame.size.height

loader = MMMaterialDesignSpinner(frame: CGRect(x: (screenWidth / 2) - (size / 2), y: (screenHeight / 2) - (size / 2), width: size, height: size))

loader.tintColor = UIColor.blue
loader.lineWidth = 4.0
loader.lineCap = kCALineCapRound;
view.addSubview(loader)

斯威夫特 5

// in viewDidLoad or viewWillLayoutSubviews
draggableView.frame.origin.x = view.bounds.midX - draggableView.bounds.midX

这是一个用于将视图或对象居中的简洁扩展:

extension CGPoint {
    static var Center: CGPoint {
        return CGPoint(x: UIScreen.main.bounds.maxX/2, y: UIScreen.main.bounds.maxY/2)
    }
}

然后像这样使用它:

textField.center = CGPoint.Center

activityindicer 是您要放在中心的视图

self.activityindicer.center = self.baseView.center

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM