如何将UIView水平居中?

时间:2015-02-19 19:17:09

标签: ios swift

如何使用UIView使CGRectMake水平居中并从视图控制器的顶部开始30px?

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

8 个答案:

答案 0 :(得分:27)

Swift 3;

subView.center.x = view.center.x

答案 1 :(得分:18)

尝试:

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)

答案 2 :(得分:12)

您无法将视图置于视图控制器中心,因为视图控制器不是视图且没有坐标系。

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

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

答案 3 :(得分:3)

尽管Rob Mayoff是正确的,但考虑在 viewWillLayoutSubviews 中对框架进行居中可能是值得的,这是在设备轮换时调用的。您还可以使用中心的属性 center.x center.y 来基于轴进行对齐。在这种情况下无需为自己打电话。

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

答案 4 :(得分: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)

答案 5 :(得分:0)

这是一个整洁的小扩展,用于居中视图或对象:

IsAlive

然后像这样使用它:

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

答案 6 :(得分:0)

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

self.activityindicater.center = self.baseView.center

答案 7 :(得分:0)

斯威夫特3:

let draw = SVG('reading-area');
var group = draw.group();

original = group.svg(getSvgText());
original.animate(1000, '-', 0).move(229, 164).scale(3);
original.animate(2000, '-', 1000).scale(1).move(50, 315);