Mam kilka niestandardowych identyfikatorów UITableViewCell w mojej aplikacji, w większości zdefiniowanych przez końcówki. Podczas przechodzenia do systemu iOS 8 i Xcode 6 marginesy po lewej i prawej stronie są nieprawidłowe. Te komórki są często przeplatane w widoku tabeli z komórkami domyślnymi.Niestandardowe obiekty UITableViewCells w systemie iOS 8 i layoutMargin
Zrobiłem przykładowy projekt, tu jest problem margines mówię:
Jedyne co udało mi się dowiedzieć, że dotyczy to nowy obiekt layoutMargins
. Dla UITableViewCells jego wartość wydaje się zmieniać w zależności od urządzenia aplikacja jest uruchomiona na:
iPhone 6 and below - layoutMargin: {8, 16, 8, 16}
iPhone 6 Plus - layoutMargin: {8, 20, 8, 20}
To wydaje się w jednej linii z marginesie widzę na standardowych komórek. Jednak treść moich niestandardowych komórek znajduje się wewnątrz komórek contentView
, która ma standardową wersję UIView layoutMargin
z {8, 8, 8, 8}
. Oznacza to, że wszelkie ograniczenia automatycznego układu, które są powiązane z marginesem kontenera, dodają nieprawidłowe odstępy.
Jedynym sposobem znalazłem się naprawić to poprzez dodanie następujących w cellForRowAtIndexPath:
cell.contentView.layoutMargins = cell.layoutMargins;
To nie wydaje się bardzo dobrym rozwiązaniem w przyszłości (zwłaszcza odkąd muszę go owinąć w sprawdzeniach dla iOS8 w celu zachowania kompatybilności).
Czy ktoś ma jakieś pomysły? Czuję, że muszę czegoś przegapić.
Dzięki! Tego właśnie szukałem. – simon