我该如何使用CGRectMake
让UIView
水平居中并距离视图控制器顶部30像素?
var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260))
draggableView.center = center
Swift 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.x和center.y来基于轴对齐。在此情况下无需调用self。
override func viewWillLayoutSubviews() {
draggableView.center = view.center
}
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)
// 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
activityindicater 是你想要放在中心的视图
self.activityindicater.center = self.baseView.center