2017-01-27 3 views
1

Я хочу, чтобы получить расстояние от кнопки в нижней части экрана в Swift 3.Swift 3: Получить расстояние кнопку внизу экрана

Я могу видеть правильное значение в раскадровке, когда я смотрю на расстояние (клавиша alt), но, к сожалению, я не могу вычислить его вручную.

Значение, которое я ищу, совпадает с константой в отношении «Вертикальное расстояние до нижней макеты» для кнопки.

view.frame.maxY - randomButton.frame.maxY 

дал мне значение слишком высоко.

+1

Пожалуйста, добавьте еще немного кода, например * где * эта единственная строка. В зависимости от того, где это - подобно viewDidLoad(), вы могли бы фактически получить отрицательное значение. – dfd

+0

Что я сказал, что вы на самом деле пытаетесь сделать? Похоже, вы хотите разместить другое изображение между кнопкой и нижней частью экрана? Если это так, вы должны использовать автоматическую компоновку или представления стека. – Fogmeister

+0

Код is viewDidLoad – Michael

ответ

2
view.frame.size.height - (button.frame.size.height + button.frame.origin.y) 

Я думаю, что все в порядке! Надеюсь, что это помогает

0

Используйте это, чтобы иметь его в нижней части кнопки в нижней части окна (испытано):

view.frame.size.height - randomButton.frame.size.height/2 - randomButton.frame.origin.y 
+0

Почему высота/2? –

+0

То есть, если его происхождение в центре! если его вверху он будет просто высотой, и если бы он был внизу, вы не должны вычитать ничего с высоты. –

3

Если кнопка не является прямым правопреемником зрения контроллера представления (ака , иерархия - это что-то вроде ViewController View -> SomeOtherView-> Button), вы не получите правильную математику, просто используя фреймы. Вам нужно будет перевести Y-позицию кнопки в координатное пространство объекта окна или основного вида вашего контроллера.

Взгляните на этот вопрос: Convert a UIView origin point to its Window coordinate system

let realOrigin = someView.convert(button.frame.origin, to: self.view) 

Затем применить математику, предложенную Лукасом Palaian.

let bottomSpace = view.frame.maxY - (button.frame.height + realOrigin.y) 

Другая работа вокруг, в случае, если что-то действительно дикие и странные происходит там, перетащить выход из нижнего ограничения кнопки. (Выберите ограничение из иерархии представлений в Interface Builder, удерживайте клавишу управления и перетащите ограничение на контроллер вида.) Затем в вашем коде вы можете получить доступ к константе.

let bottomSpace = myButtonBottomConstraint.constant 
Смежные вопросы