2008-10-09 12 views
8

Mam widok, który obsługuje wyświetlanie krajobrazu i portretów, a wszystkie elementy sterujące poruszają się, gdy przełączasz się z jednego na drugi. Obecnie robię to, ustawiając .center każdego z elementów sterujących, gdy użytkownik obraca telefon. Problem polega na tym, że jest to nużące i wymaga dużej ilości kodu, i wydaje się, że w pierwszym rzędzie nie uda mu się osiągnąć celu.Jaki jest najlepszy sposób radzenia sobie z różnicami między krajobrazem a portretem w IB?

Moje pytanie brzmi: czy istnieje sposób w Konstruktorze interfejsów dla jednego widoku do obsługi wielu wyglądów (jeden dla portretu portretowego)? Jeśli nie, to w jaki sposób inni ludzie robią to z IB? Czy ustawiłeś 2 widoki?

Edit: Właśnie w celu wyjaśnienia moje poglądy poziomym i pionowym wyglądać inaczej, nie chcę przekształcić prosty, właściwie wyświetlać dane w różny sposób w trybie poziomym

Odpowiedz

0

nie jestem w 100% pewien, czy jest to możliwe, ale czy rozważałeś użycie różnych kontrolerów widoku dla krajobrazu i portretu?

+0

@Colin: Jak by to działało? Na obrocie musiałbym upuścić jeden i dodać drugi, co, jak sądzę, zrobiłoby dziwne rzeczy przy odświeżaniu ekranu ... oznaczałoby to również, że musiałbym ustawić wspólną klasę nadrzędną i spróbować uczynić je wspólnym kodem ... może stać się bardzo brudny – rustyshelf

1

W razie potrzeby dodaję obiekty UIView do widoku w IB, który utajam. Daj mu ładny kolor tła, abyś mógł go zobaczyć i wysłać go do samego tła. Następnie użyj ramki tego widoku, gdy potrzebujesz ustawić ramkę obiektu. Jeśli masz ich dużo, możesz zamiast tego użyć opcji UILabel, aby nadać jej widoczną nazwę w IB.

Jeśli martwisz się o problemach z pamięcią, po prostu usunąć wszystkie te dodatkowe UIView sw ViewDidLoad i tylko przechowywać swoje wartości klatek na członka CGRect s. Działa to oczywiście tylko wtedy, gdy nie masz żadnych widoków automatycznej zmiany rozmiaru lub repozycji na obrót, co prawdopodobnie nie powinno tak być w tym przypadku. Robię to dla zmiany rozmiaru/repozycjonowania z dowolnego powodu, nie tylko podczas obracania ekranu.

0

Atrybuty AutoSize obiektów IBOutlet w Inspektorze rozmiarów IB (polecenie 3) dają całkiem niezłe opcje automatycznego rozciągania i pozycjonowania elementów. Możesz kontrolować pozycje ekranu L/R i T/B oraz względną szerokość i wysokość. Nie można uzyskać pełnej kontroli nad układem, ale większość podstawowych operacji jest dostępna.

0

Jedynym sposobem, w jaki jeden widok może obsługiwać wiele orientacji w IB, jest ustawienie maski automatycznej komponentów do skalowania i/lub zakotwiczenia do krawędzi. Aby zaprojektować zupełnie inny układ dla każdej orientacji, musisz osobno zaprojektować widok pionowy i poziomy (każdy we własnym XIB) i przełączać się między nimi programowo.

Powiązane problemy