2016-06-03 4 views
0

Я пытаюсь получить ширину UIView внутри пользовательского , чтобы внести некоторые изменения в его внешний вид. Я использую autolayout, однако ширина возвращаемого представления - это то, что определено в файле xib. Это отличается от его фактической ширины, как только автозапуск выложил ячейку.Правильная ширина автовыброса не возвращается на iOS 8

Мой кода в layoutSubviews():

override func layoutSubviews() { 
    super.layoutSubviews() 
    print(backgroundView.frame.width) 
} 

Это работает прошивка 9, но не в прошивке 8. Вызов self.setNeedsLayout() и self.layoutIfNeeded() не имеет никакого эффекта. Где я могу переместить код так, чтобы он отображал правильную ширину?

Спасибо.

+0

Быстрое исправление может быть, если ширина ячейки покрывает всю ширину, чтобы использовать 'UIScreen.mainScreen(). Bounds.width', или немного вычисления с учетом заполнения. – iphonic

+0

@iphonic У него есть отступы, но да, это может быть вариант. Просто интересно, лучше ли это лучший способ. – Tometoyou

+0

Может быть [это] (http://stackoverflow.com/questions/26629240/ios-autolayout-frame-size -not-set-in-viewdidlayoutsubviews) может вам помочь. – iphonic

ответ

0

У меня была эта проблема раньше, и если я правильно помню, это имело какое-то отношение к iOS, не зная фактического размера, до тех пор, пока представление не будет нарисовано в первый раз. Мы смогли обновить его, обновив после viewDidAppear (как вы уже упоминали, это соответствующий размер после обновления), но это не совсем лучшее решение.

Что-то еще, что вы могли бы попробовать, это добавить в ячейку ограничительные выходы, которыми вы управляете, где бы вы ни настраивали свою ячейку. Например, если вам нужен элемент пользовательского интерфейса для определенной ширины в некоторых случаях, но не для других, вы можете добавить ограничение ширины, которое вы измените значение. Это позволяет другим элементам изменять размеры на основе других ограничений в представлении. Ограничение здесь заключается в том, что вам нужно заранее знать ширину одного из ваших элементов.

 Смежные вопросы

  • Нет связанных вопросов^_^