2009-07-06 12 views
82

Prawdopodobnie jest to coś prostego, ale nie mogę sobie wyobrazić, dlaczego nie mogę zmienić rozmiaru UIView w Xib w Interface Builder.Nie można zmienić rozmiaru UIView w IB

Utworzono nowy widok XIB w kodzie xx iw inspektorze rozmiarów, szerokość i wysokość są wyłączone i wyszarzone do 320 przez 460. Jest to dziwne, ponieważ mogę zmienić rozmiar dla pozostałych dwóch widoków (powiązanych z pozostałe dwa elementy paska zakładek).

Nie jestem pewien, czy to ma coś wspólnego z, ale ja niedawno zaktualizowany SDK 3.

Dzięki!

Odpowiedz

78

myślę, że nie można zmieniać rozmiar podczas symulacji żadnych elementów interfejsu użytkownika, takie jak na pasku stanu w konstruktorze Interface. Możesz spróbować wyłączyć symulowane elementy, jeśli są włączone. Nie jestem do końca pewien, dlaczego tak jest, dlatego docenilibyśmy opinie wszystkich, którzy wiedzą, dlaczego tak właśnie jest - musi to być dobry powód.

+1

Dzięki, racja. Po aktualizacji xcode i IB pasek stanu był domyślnie włączony. Inni mają to w domu. –

+0

+1 do was obojga .. !! –

+1

Tak jak w Xcode 4.2, iOS 5.0.1 to się zmieniło. Moja odpowiedź poniżej wyjaśnia, w jaki sposób można to osiągnąć. – lol

40

Część, której szukasz, znajduje się na pierwszym panelu Inspektora (Command-1). Na samej górze znajduje się sekcja Symulacja elementów interfejsu użytkownika. Domyślnie pasek stanu jest włączony. Musisz upewnić się, że wszystkie trzy są ustawione na Brak.

+2

Dzięki, te odpowiedzi tylko zaoszczędziły mi mnóstwo czasu! Czy ktoś wie, dlaczego IB to robi? – Gregor

+0

+1 To doprowadzało mnie do szału! Dzięki! – Bogatyr

+0

Dzięki kolego. Szukałem tego. – natanavra

4

Po prostu przejdź do inspektora, przejdź do pierwszego panelu (lub naciśnij klawisz polecenia 1), a następnie zmień pola oznaczone na pasku statusu, górnym pasku i dolnym pasku na Brak w sekcji "Symulowane elementy interfejsu użytkownika". Może być konieczne kliknięcie małego trójkąta, aby były widoczne.

0

Zabawny Mam podobny problem. Usunąłem wszystkie widoki z pliku Xib i ponownie dodałem widok. Ustaw pasek stanu na "nieokreślony", aby pasek stanu nie był zgodny z ustawieniem. Widok, po dodaniu, zostaje utworzony za pomocą x = 0, y = 0, w = 320 h = 460 zamiast (0,0,320,480), tak jak bym się spodziewał. Po zmianie wysokości na 480 i podłączeniu jej do właściciela pliku i zmianie koloru, aby wyróżniał się w stosunku do tła. Powiedziałem, że między górną częścią ekranu a widokiem był biały pas. I zwiększona mój kod z:

#define RECTLOG(rect) (NSLog(@"" #rect @" x:%f y:%f w:%f h:%f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)); 

ciągu viewDidLoad

 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    RECTLOG(self.view.frame); 
} 

Okazuje się, że widok jest jak jest ładowany z IB jest rzeczywiście (0, 20, 320, 480) Jako pracy wokół Zresetowałem ramkę widoku za pomocą self.view.frame = CGRectMake (0, 0, 320, 480);

Używam IB 3.2.5

chciałabym wiedzieć z małą poprawką na ten jeden.

+3

FYI, możesz użyć NSStringFromCGRect (rect), aby uzyskać ciąg do wydruku reprezentujący CGRect. – Berry

+0

To był świetny FYI, sprawdziłem to i możesz uzyskać wartość łańcucha z CGPoint i CGSize! bardzo gotować, dziękuję. – FierceMonkey

1

Zauważyłem, że UIView tworzone automatycznie podczas tworzenia pliku XIB nie może być zmieniany z panelu zaklejanie lub uchwytów krawędziowych.

Wszystko zrobiłem było dodać kolejny UIView i wyciągnął wszystko z mojego starego UIView do nowego następnie usunięty stary.

To rozwiązało problem dla mnie, ale tak, myślę, że jest to kwestia, z konstruktora interfejsu dla Apple rozwiązać (ktoś mnie poprawić jeśli się mylę).

Używam zintegrowanego kreatora interfejsów XCode 4.

25

Podobnie jak w Xcode 4.2, iOS 5.0.1, domyślne symulowane metryki obejmują symulowanie atrybutu "rozmiar" dla UIViewControllers na "wywnioskowane"

Po zmianie tego atrybutu na "Dowolny kształt", możesz zmienić rozmiar UIView zawartego w UIViewController, jednocześnie symulując pasek stanu (lub inny z symulacji dla tej sprawy)

+1

Atrybut rozmiaru teraz domyślnie "Retina 4 Full screen", ale zmiana go na "Freeform" nadal działa. –

63

aby osiągnąć w Xcode 4.6.3/5.0.2 trzeba wykonać zrzut ekranu poniżej:

  1. w sekcji "Inspector File -> untick Use Auto Layout
  2. Kliknij na Atrybuty S elektor & Wybierz Freeform dla rozmiaru

Jest to konieczne przy tworzeniu headerView dla tableview

enter image description here

0

I rozwiązywało problem w inny sposób ...

otworzyć XIb z Twój ulubiony edytor tekstowy i edytuj tę linię:

 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController"> 

CompassViewController to nazwa twojej klasy, z którą próbujesz powiązać swój nib/xib.

Po prostu edytuj swoją klasę z poprawną nazwą klasy i gotowe;)