2015-03-01 5 views
2

На прошлой неделе я погрузился в автомат. При кодировании моего первого приложения сегодня я столкнулся с странной «ошибкой» с UIScrollView и автоматической компоновкой. Я не мог найти подобную проблему здесь, поэтому создал новую тему.У горизонтального ограничения автоопределения есть странное смещение на UIScrollView/UIView

Вот несколько примеров кода:

self.view.backgroundColor = UIColor.greenColor() 

    let view = UIScrollView() 
    view.setTranslatesAutoresizingMaskIntoConstraints(false) 
    view.backgroundColor = UIColor.redColor() 
    self.view.addSubview(view) 

    let constraintH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-[view]-|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view": view]) 

    // two options fixing this bug: "H:|-0-[view]-0-|" or "H:|[view]|" 
    // only horizontal constraint has this issue 

    let constraintV = NSLayoutConstraint.constraintsWithVisualFormat("V:|-[view]-|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view": view]) 

    self.view.addConstraints(constraintH) 
    self.view.addConstraints(constraintV) 

Сначала я думал, что причина была IOS 8.3 Beta SDK, но проблема также присутствует с прошивкой 8.1 SDK. Так это только я или это какая-то ошибка автоопределения, которую я должен сообщить Apple?

UPDATE: Я изменил код от UIScrollView к UIView, так что вы можете увидеть, что эта ошибка также применяется к нормальному UIView, а также.

http://i58.tinypic.com/288aw3k.png

+0

Вы действительно при условии близкой к нулю информации о ошибка сама. Дайте нам несколько скриншотов или что-то еще. – Vaiden

ответ

1

Горизонтальные пространства является маржа, которая вводится в прошивкой 8. Вы можете попробовать запустить его на IOS 7.1 тренажере и не было бы никакой маржи.

Вы были правы, удаление черточки должны исправить

let constraintH = NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options: NSLayoutFormatOptions(0), metrics: nil, views: ["view": view]) 

Кроме того, если вы используете UIScrollView и AutoLayout вы должны прочитать эту https://developer.apple.com/library/ios/technotes/tn2154/_index.html

+0

Если бы вы могли добавить цитату или ссылку на некоторые страницы Apples dev, где они представили эту маржу, я тогда приму ваш ответ. Но все же странно, что нет вертикальной границы для «V: | - [view] - |», и мне интересно, почему это так. – DevAndArtist

+0

в соответствии с [link] (https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/VisualFormatLanguage/VisualFormatLanguage.html) "[button] - [textField]" создаст стандартное пространство 8 –

+0

Все еще удивляется, почему это не относится к вертикальному ограничению. В любом случае, это хороший ответ, я должен был следить за ним в документах. Спасибо. – DevAndArtist

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