7

Mam już zbudowaną podklasę UIViewController z kilkoma kontrolkami, i właśnie zdałem sobie sprawę, że jeśli obrócę iPhone'a, połowa elementów sterujących stanie się niewidoczna. Chciałbym w jakiś sposób przewinąć tak, aby po obróceniu urządzenia (lub symulatora) użytkownik mógł przewijać widok, aby zobaczyć wszystkie kontrolki.Jak zmodyfikować istniejący kontroler UIViewController, aby umożliwić przewijanie?

Miałem nadzieję zrobić to wszystko w Konstruktor interfejsu. Próbowałem zmienić klasę widoku z UIView na UIScrollView w edytorze klasy tożsamości, ale nic nie przewija. Podstawową klasą mojego kontrolera widoku jest prosty UIViewController<UIScrollViewDelegate>.

Czy istnieje prosty sposób na sprawienie, aby główny widok w moim widoku był przewijany, bez konieczności ponownego tworzenia całego elementu w IB?

+0

Mam ten sam problem, nikt nie wydaje się wiedzieć – Maysam

Odpowiedz

2

Dodaj UIScrollView i wykonaj wszystkie elementy sterujące, widżety i etykiety subviews widoku przewijania, przeciągając je z dowolnego miejsca, w którym znajdują się "do" lub "wewnątrz" widoku przewijania. To sprawia, że ​​są one subskrybcjami widoku przewijania, co jest tym, czego potrzebujesz.

+0

Wypróbowałem to też. Dodano UIScrollView, przeniosłem do niego elementy sterujące, usunięto UIView, zmieniono kontroler na UIScrollViwDelegate i wysłałem kontroler na delegata i przewijam widok. Bez przewijania. – Paul

+0

Czy możesz nie tylko umieścić widok w widoku przewijania? Po co usuwać oryginalne UIView? –

+0

Dlaczego upadek? –

0

Dobrze byłoby, aby zrozumieć, co jest wyświetlanie interfejsu, ale sugeruję jedną z następujących czynności:

  1. Nie dopuścić obrót wracając NO z shouldAutorotateToInterfaceOrientation
  2. użyciu interfejs Builder adjust your springs and struts aby wszystkie elementy interfejsu pasowały do ​​widoku poziomego
  3. Dodaj nowy UIScrollView do Konstruktora interfejsów i przeciągnij do niego UIView, a następnie przypisz ponownie właściwość widoku właściciela pliku do widoku przewijania.
+0

1. Chcę rotacji. 2. Nie ma miejsca. Zaufaj mi. 3. Wypróbowałem to. Bez przewijania. Czy jest to problem delegata? – Paul

+0

Czy próbowałeś aktualizować zawartość programu UIScrollViewSize po obróceniu? –

1

udało mi się to zrobić poprzez dodanie widoku przewijania widoku w IB, dzięki czemu kontroler Zobacz UIScrollViewDelegate, podpinania się Scrollview do obiektu UIScrollView w IB, zaczepiając delegata do właściciela pliku, a dodanie tej linii w viewDidLoad:

- (void) viewDidLoad { 
     scrollView.contentSize = CGSizeMake(1280, 960); 
    } 
1

Przewijanie zachowanie jest wywoływana tylko wtedy, gdy contentSize o UIScrollView jest większy niż jego granicami.

2

Można to zrobić w następujący sposób:

  1. Otwórz plik nib i Tworzenie obiektu UIScrollView pod swoim UIView Object.
  2. przenieść wszystkie kontrole na UIScrollView
  3. Otwórz plik nagłówka (.h) i dodać nową właściwość do widoku przewijania:

@property (nonatomic, zachowują) IBOutlet UIScrollView * Scrollview;

  1. Otwórz swój plik implementacji (.m) i wstawić następujące:

@synthesize scrollView;

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    // Enable scrolling for portrait 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, 600); 

} 
  1. Wróć do stalówki pliku i drut aż Scrollview na właściciela pliku do obiektu UIScrollView.

Prawdziwa sztuczka polega na ustawieniu scrollView.contentSize. Po ustawieniu, powinno nastąpić przewijanie.

Jeśli chcesz umożliwić przewijanie, gdy urządzenie znajduje się w orientacji pionowej, można użyć to:

// Enable scrolling for landscape orientation 
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height); 

To powinno dać jakiś punkt odniesienia.

Flea

0

Dodaj pasek przewijania do pliku XIB i następnie drag drop & kontrole do przewijania. Wewnątrz load view używać

scrollView.contentSize = CGSizeMake(CONTENT_WIDTH, CONTENT_HEIGHT); 
+0

Aby poprawić jakość twojego postu, podaj, w jaki sposób/dlaczego ten kod rozwiąże problem. –

5

Dla ludzi, którzy korzystają z ujęć, jest to dość łatwe do zrobienia

  • w zarysie Dokument wybierz najwyższą View z UIViewController
  • potem Identity Inspecter pod niestandardowej klasy , dla klasy wpisz UIScrollView

To wszystko.

+0

To jest odpowiedź dla Xcode 7.2 –

+0

To właśnie zepsuło mój układ. –

Powiązane problemy