Как я могу горизонтально центрировать UIView?

Как сделать UIView горизонтально центрированным и 30px с вершины контроллера вида с помощью CGRectMake ?

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

Пытаться:

 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 

Swift 3;

 subView.center.x = view.center.x 

Хотя Роб Майофф прав, возможно, стоит рассмотреть вопрос о центрировании вашего фрейма в viewWillLayoutSubviews , который вызван вращением устройства. Вы также можете использовать свойства center.x и center.y центра для выравнивания по оси. Не нужно называть себя в этом случае.

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

Я использую библиотеку « MMMaterialDesignSpinner » и создаю пользовательский индикатор активности в центре обзора. Он работает правильно, вы можете изменить свое собственное имя вида, например «DraggableView». Надеюсь, это вам поможет. Этот код добавляется в функцию viewDidLoad в swift 3.

 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) 

Это аккуратное небольшое расширение для центрирования вида или объекта:

 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

Swift 3:

 // in view controller, in viewDidLoad function let draggableView = DraggableView(frame: CGRect(x: 0, y: 30, width: 260, height: 260)) draggableView.frame.origin.x = view.bounds.midX - draggableView.bounds.midX 
Interesting Posts
Давайте будем гением компьютера.