2014-10-29 13 views
7

Próbuję użyć automatycznego układu dla niestandardowej komórki widoku tabeli w mojej aplikacji.Etykiety AutoLayout odcięte po prawej stronie ekranu

Nie wydaje mi się, aby ograniczenia były całkiem poprawne.

Położyłem etykiety w niestandardowej komórce widoku tabeli, ale etykiety są nadal odcinane. Jakieś pomysły?

Dzięki! Publikuje cokolwiek, co jest potrzebne. Próbowałem wyświetlić potrzebne informacje na poniższym obrazku:

Debugowanie w Xcode. W jakiś sposób to, co pokazuje Symulator, wygląda inaczej niż w debugowaniu Xcode.

Oto szerokość mojego Tableview pokazany: enter image description here

UPDATE: Problemem tutaj wiązał się co użytkownik Matt powiedział w przyjętym odpowiedź, ale chciałem zrobić Q & A nieco jaśniejsze teraz, gdy go mam, zorientowałem się, że jest to ktoś inny.

W swoim pierwszym komentarzu wspomniał o debugowaniu w Xcode View, który był świetny i mogłem zagłębić się w nieco więcej. Nazywa się Edytor Asystenta: Podgląd urządzenia, gdzie można zobaczyć układ i warstwy ekranu, aby sprawdzić, czy etykiety nakładają się lub wychodzą poza ekran w zależności od urządzenia, na którym działa. Jeśli chcesz sprawdzić rozmiar wielu urządzeń, po prostu kliknij ikonę plusa w lewym dolnym rogu tego zdjęcia. enter image description here

Pomogło mi to znaleźć nakładające się na siebie warstwy i problemy z wielkością w TableView. Byłem w stanie zobaczyć, jak to wygląda na każdym rozmiarze urządzenia.

Co również pomaga tutaj czasami skorzystać z menu Pin. Czasami etykiety mogą znikać z ekranu, ponieważ nie wiedzą, gdzie ograniczenia komórek są oparte na rozmiarze urządzenia. Tak więc etykieta może być wyświetlana poza ekranem, jeśli etykieta jest oparta na układzie poziomym, ale urządzenie to iPhone 5 i na przykład portret. To menu Pin:

enter image description here

Nadzieja, że ​​sens i daje trochę więcej koloru do problemu. Daj mi znać, jeśli masz jakiekolwiek pytania, dzięki za pomoc dla wszystkich!

+0

Witam ponownie. Wiesz o debugowaniu widoku Xcode 6, prawda? (To jak Reveal.) Więc użyj debugowania widoku Xcode 6, aby zobaczyć, co naprawdę się dzieje tutaj. – matt

+0

@matt yeah Próbowałem to rozgryźć, ponieważ pokazuje mi coś innego niż to, co uruchamiam w Symulatorze, więc nie jestem pewien co się dzieje? Zaktualizowałem swoje pytanie, aby pokazać 2 dodatkowe zdjęcia pokazujące, co pokazuje symulator vs przeglądanie debugowania. Jeśli masz pojęcie, dlaczego tak się dzieje, powiedz to. – Realinstomp

+0

Cóż, to wygląda dokładnie tak, jak sugerowałem w drugim pytaniu, które zadawałeś - to nie etykiety są problemem, to widok tabeli jest zbyt szeroki. – matt

Odpowiedz

10

Problem polega na tym, że używasz układ auto ale nie masz nic na temat doborze widok tabeli zrobić. Widok tabeli tutaj nie jest widokiem kontrolera widoku; to jest podgląd. Widok kontrolera widoku jest automatycznie dopasowywany do rozmiaru urządzenia/okna, ale jego widoki podrzędne nie są automatycznie zmieniane. W efekcie widok tabeli jest zbyt szeroki dla urządzenia; cały stół wystaje w przestrzeń po prawej stronie.

+0

To ma sens, dzięki za napisanie tego trochę więcej tutaj, więc przynajmniej będę potrzebował jakiegoś ograniczenia na prawidłowy rozmiar brzmi jak – Realinstomp

+0

Nie, nie "na minimum". Ograniczenia _właściwie_ określają całkowity rozmiar i pozycję_. – matt

+0

Zgaduję, że powinienem być bardziej przejrzysty, kiedy to napisałem, nie jako minimum, ale jako "jeden z minimum", masz rację, dziękuję! – Realinstomp

3

Użyj spacją z prawej strony etykiet do krawędzi ich SuperView, i ustawić ją na greater than zamiast equals o wartości ~ 5

+0

Dodałem kolejny zrzut ekranu do mojego pierwotnego pytania, pokazując, co wypróbowałem zgodnie z twoją sugestią, i z jakiegoś powodu wciąż odcina się, czy coś ci się nie podoba, czego mi brakuje? Dzięki Levi! – Realinstomp

+0

Wygląda dobrze, ale może to jest wtedy superview. Powinieneś umieścić punkt przerwania w metodzie 'cellForRowAtIndexPath' lub' willDisplayCellForRowAtIndexPath' (może lepiej tutaj) i sprawdzić, która z podpowiedzi komórki ma większą szerokość niż powinna. – Levi

2

Przeglądu ograniczeń swojej tableview z poglądem. Narysuj obramowanie komórki, granicę etykiety i obramowanie widoku tabeli w różnych kolorach, aby wiedzieć, które elementy nie są wyświetlane poprawnie.

Ex:

#import <QuartzCore/QuartzCore.h> 

... 
cell.layer.border.width = 1; 
cell.layer.border.color = [UIColor blackColor].CGColor; 
+0

Witam @ tyt_g207, dzięki za odpowiedź, zaktualizowałem moje oryginalne pytanie dwoma zrzutami ekranu z debugowania widoku Xcode 6, które pokazują to samo. Jak się przekonasz, problem polega na tym, że na symulatorze działa coś, co wygląda nieco inaczej niż Wyświetlenie debugowania i nie jestem pewien dlaczego? – Realinstomp

+0

To zależy od celu, który uruchamiasz. Przypuszczam, że poprawiono rozmiar (w symulowanych metrykach), aby zawartość nie była rozciągnięta automatycznie. Dodaj trochę NSLog() w swoim programie, aby pokazać ramkę swojego Widoku, TableView, Komórek. Istnieje API NSStringFromCGRect(), aby wyświetlić każdy rozmiar klatki. –

+0

Brzmi nieźle, spróbuję tego! – Realinstomp

0

Rzeczą, która pracowała dla mnie przy rozwiązywaniu przycinanych widoków, było odznaczenie opcji "Ogranicz do marginesów" w Układzie automatycznym.

enter image description here

Powiązane problemy