2014-11-20 2 views
11

В попытке решить проблему автоматической компоновки, связанные с программным добавлением суб вид на вид прокрутки, я побежал в many ссылки по всему Интернету, что в различных сценариях говорят, чтобы установить translatesAutoresizingMaskIntoConstraints = YES или translatesAutoresizingMaskIntoConstraints = NO, в зависимости от случая.Невозможно установить translatesAutoresizingMaskIntoConstraints

Однако в Swift, когда я типа:

var view = UIView() 
view.translatesAutoresizingMaskIntoConstraints = false 

Я получаю ошибку в линии: Cannot assign to 'translatesAutoresizingMaskIntoConstraints' in 'view'. Зачем? Потому что при проверке вы обнаружите, что это функция без параметров, а не свойство.

Я получил вокруг этого подклассов, но это неудобство иметь подкласс каждый вида я имею дело с, просто установить translatesAutoresizingMaskIntoConstraints:

class CardView: UIView { 
    override func translatesAutoresizingMaskIntoConstraints() -> Bool { 
     return false 
    } 
} 

Кто-нибудь знает способ обойти это, или может пролить свет на несоответствие между тем, что вам сообщают общие интернет-советы, и тем, что вы действительно можете сделать, в Свифте?

+1

Swift 2.0 позволяет установить 'translatesAutoresizingMaskIntoConstraints' непосредственно. Ответ на этот вопрос по-прежнему применяется до Swift 2.0. –

ответ

20

translatesAutoresizingMaskIntoConstraints - фактически метод UIView, а не свойство.

Синтаксис работает, потому что ObjC позволяет использовать точечную нотацию для вызова методов (есть еще одно обсуждение того, как свойства фактически автоматически генерируют методы getter/setter).

Используйте метод вместо того, чтобы использовать обозначения свойства из ObjC

view.setTranslatesAutoresizingMaskIntoConstraints(false) 
+0

Удовлетворительный факт: в NSView этот синтаксис не работает, и вместо этого вам нужно использовать view.translatesAutoresizingMaskIntoConstraints = false. Это, вероятно, радар-достойный. –

3

Вместо этого использовать view.setTranslatesAutoresizingMaskIntoConstraints(false).

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