Używam autolayout w ramach UICollectionViewCell. Super prosty układ: tylko UILabel. Chcę, aby UILabel zajmował całą szerokość minus wstawka o wielkości 20 pikseli i był wyśrodkowany w komórce zarówno w pionie, jak iw poziomie. Ustawiłem ograniczenia, które właśnie to robią. Jeśli uruchomię go na dowolnym urządzeniu i symulatorze ios 8, działa idealnie. Jednak gdy uruchomię go na niektórych urządzeniach ios 7, więzy nie działają. Próbowałem przeglądać dokumenty Apple, ale żadna z tych zmian nie wydaje się być związana z automatycznym układem.AutoLayout działa w ios 8, ale nie w ios 7?
Oto kod źródłowy XML choć wątpię, to znaczy tyle:
<constraints>
<constraint firstItem="OIc-cg-9hO" firstAttribute="leading" secondItem="Ga6-nx-lOn" secondAttribute="leading" constant="20" id="A7U-sd-fcL"/>
<constraint firstAttribute="centerY" secondItem="OIc-cg-9hO" secondAttribute="centerY" id="G9e-9W-aDS"/>
<constraint firstAttribute="centerX" secondItem="OIc-cg-9hO" secondAttribute="centerX" id="TrB-hI-7Kw"/>
<constraint firstAttribute="trailing" secondItem="OIc-cg-9hO" secondAttribute="trailing" constant="20" id="yjH-nf-D9U"/>
</constraints>
Więcej o obejście niż odpowiedź: ale dodałem ograniczeń w kodzie następująco:
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.cellName
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeWidth
multiplier:1.0
constant:-20.0]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.cellName
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0.0]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.cellName
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeCenterY
multiplier:1.0
constant:0.0]];
Na zamówienie aby to działało, potrzebowałem zarówno kodowanych ograniczeń, jak i ograniczeń IB. Nie wiem dlaczego!
Jaki wynik dostajesz w iOS 7? Nie widzę niczego w tych ograniczeniach, które nie powinny działać w iOS 7. – rdelmar
UILabel ma dokładną wysokość i szerokość xib – user3534641
Mam dokładnie takie same ustawienia i problemy. Jakieś rozwiązania? – Ravi