Colegas de desenvolvimento, estou tendo problemas com o AutoLayout no Interface Builder (Xcode 5 / iOS 7). É muito básico e importante, então acho que todos devem saber como isso funciona corretamente. Se este é um bug no Xcode, é um problema crítico!
Portanto, sempre que tenho uma hierarquia de exibição como essa, tenho problemas:
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
O UIScrollView possui restrições sólidas, por exemplo, 50 px de todos os lados (sem problemas). Em seguida, adiciono uma restrição de espaço superior ao UILabel (sem problemas) (e posso até fixar a altura / largura do rótulo, não altera nada, mas deve ser desnecessário devido ao tamanho intrínseco do rótulo)
O problema começa quando adiciono uma restrição à direita no UILabel:
Por exemplo, espaço à direita para: Superview Igual a: 25
Agora, dois avisos ocorrem - e eu não entendo o porquê:
A) Ambigüidade de tamanho de conteúdo rolável (a exibição de rolagem possui altura / largura ambígua de conteúdo rolável)
B) Visualizações incorretas (rótulo esperado: x = -67 Real: x = 207
Fiz este exemplo mínimo em um projeto recém-baixado, que você pode baixar e anexei uma captura de tela. Como você pode ver, o Interface Builder espera que o Label fique fora do limite do UIScrollView (o retângulo tracejado laranja). A atualização do quadro da etiqueta com a ferramenta Resolver problemas move-a para a direita.
Observação: se você substituir o UIScrollView por um UIView, o comportamento será o esperado (o quadro do Label está correto e de acordo com a restrição). Portanto, parece haver um problema com o UIScrollView ou estou perdendo algo importante.
Quando executo o aplicativo sem atualizar o quadro do Label, conforme sugerido pelo IB, ele está posicionado perfeitamente, exatamente onde deveria estar e o UIScrollView é rolável. Se eu atualizar o quadro, a etiqueta estará fora de vista e o UIScrollView não rolará.
Ajude-me Obi-Wan Kenobi! Por que o layout ambíguo? Por que a visão equivocada?
Você pode baixar o projeto de amostra aqui e tentar descobrir o que está acontecendo: https://github.com/Wirsing84/AutoLayoutProblem
UIScrollView
diretamente. Em vez disso, use UICollectionView
ou UITableView
o máximo possível, principalmente tudo é possível com esse elemento e também fornece simplicidade, legibilidade e reutilização !!!