У меня есть кнопка, которая имеет ограничение нижнего пробела к Superview с константой 0, которая помещает ее прямо в нижнюю часть экрана. Визуально, когда я запускаю приложение, это именно то, что происходит - кнопка находится в нижней части экрана. В коде я хочу получить frame.origin.y кнопки, чтобы я мог поместить другие объекты программно над кнопкой.UIButton.frame.origin.y - неправильное значение
Рамка.origin.y + frame.height должен равняться высоте экрана, так как он расположен прямо до нижней части, но значения, которые я получаю от проверки рамки UIButton, неверны.
Использование Println, чтобы увидеть значения:
println("HomeBtn starts: \(homeBtn.frame.origin.y)")
println("HomeBtn height: \(homeBtn.frame.height)")
println("Screen height: \(self.view.frame.height)")
Вот результаты ...
На iPhone 6+:
HomeBtn starts: 528.0
HomeBtn height: 72.0
Screen height: 736.0
На iPhone 5:
HomeBtn starts: 528.0
HomeBtn height: 72.0
Screen height: 568.0
На iPad:
HomeBtn starts: 528.0
HomeBtn height: 72.0
Screen height: 1024.0
528 и 72 соответствуют значениям, представленным на HomeBtn в раскадровке/Interface Builder, но с Autolayout и разных размеров устройств, эти значения должны изменяться для каждого устройства.
Есть ли лучшее решение для получения местоположения UIView (будь то кнопка/изображениеView/label/etc) после того, как оно было помещено Autolayout, вместо использования его значений frame.origin и frame.height/width?
Где вы просматриваете информацию о раме? Он недействителен до 'viewDidLayoutSubviews', потому что Auto Layout еще не запущен. – vacawama
@vacawama - правильный ответ! Я все еще использовал viewDidLoad - разместил его как ответ, и я отметю его правильно. Большое спасибо за то, что он ударил меня в голову. =) – RanLearns