如何水平居中一个UIView?

11

我该如何使用CGRectMakeUIView水平居中并距离视图控制器顶部30像素?

var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260))
draggableView.center = center
8个回答

41

Swift 3;

subView.center.x = view.center.x

3
这应该成为被接受的答案。简单明了。 - Christopher Smit
很好的解决方案,非常简单。 - Basant

22

尝试:

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)

12

你无法在视图控制器中心视图,因为视图控制器不是视图,也没有坐标系统。

你可以相对于另一个视图居中一个视图。假设你想将draggableView居中于视图控制器的视图,请确保self是视图控制器,并且draggableView将成为视图控制器视图的直接子视图:

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

3

虽然Rob Mayoff是正确的,但考虑在viewWillLayoutSubviews中居中框架可能是值得的,因为它在设备旋转时被调用。您还可以使用中心的属性center.xcenter.y来基于轴对齐。在此情况下无需调用self。

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

1
我正在使用 '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)

1

Swift 5

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

0
这是一个非常实用的小扩展,可以使视图或对象居中:
extension CGPoint {
    static var Center: CGPoint {
        return CGPoint(x: UIScreen.main.bounds.maxX/2, y: UIScreen.main.bounds.maxY/2)
    }
}

然后像这样使用它:

textField.center = CGPoint.Center

0

activityindicater 是你想要放在中心的视图

self.activityindicater.center = self.baseView.center


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接