如何使用UIView
使CGRectMake
水平居中并从视图控制器的顶部开始30px?
var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260))
draggableView.center = center
答案 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);