2012-01-20 8 views
7

Dodałem przewijany widok o rozmiarze większym niż rozmiar ekranu w moim sterowniku widoku przy użyciu storyboardu. Oczywiście celem przewijania jest posiadanie zawartości większej niż widok, który ją zawiera. Chciałbym dodać przyciski i etykiety na dole przewijania graficznie w scenorysie, ale nie mogę wyświetlić tej części przewijania. Jak się tam dostanę. Próbowałem dostosować w inspektorze rozmiarów, który pracował dla mnie, gdy po raz pierwszy dodałem widok kilka tygodni temu, ale to nie pozwala mi nic zmienić.Dodawanie elementów do przewijania w storyboardie (inspektor rozmiarów wydaje się być zablokowany)

Odpowiedz

13

Jedyny sposób, w jaki udało mi się edytować moją zawartość w UIScrollView (a ta historia sięga czasów sprzed Storyboard, ale jestem prawie pewien, że nadal obowiązuje) to zmienić przesunięcie x lub y twojej ramki zawartości.

Inną opcją, w zależności od tego, czy widok treści jest "statyczny" (wbudowany w .xib), czy nie, jest wyciągnięcie go poza widok przewijania i ustawienie go jako programowego w widoku programowym w postaci viewDidLoad lub coś w tym stylu. .

Mam nadzieję, że to pomoże, mogę śledzić przykłady kodu, jeśli ma to sens i potrzebujesz ich.

EDYCJA (2/10/2012): Oto przykład, jak podłączyć większy widok do widoku przewijania. W tym przykładzie widok przewijania (scrollView) jest ustawiony na właściwość widoku kontrolera widoku. W pliku .xib dodałem również nazwę UIView o nazwie largerView. Te dwa pliki nie są w żaden sposób powiązane z plikiem .xib, tylko pojawiają się tam.

Biorąc pod uwagę ...

@property (nonatomic, retain) IBOutlet UIView *largeView; 
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView; 

W viewDidLoad: po prostu ...

// add the largeView to the main scrollView 
[scrollView addSubview:largeView]; 
[scrollView setContentSize:largeView.frame.size]; 

Jest to prawdopodobnie najprostszy przykład chociaż. Powodzenia!

+0

Wróciłem i spojrzałem na to jeszcze raz. Odkryłem, że widok przewijania, który ma treść większą niż widok w scenopisie, był widokiem najwyższego poziomu kontrolera widoku. Po skonfigurowaniu w ten sposób nie można dostosować przesunięcia xiy w inspektorze rozmiarów. Jeśli jednak uiview jest najwyższym poziomem i znajduje się w nim widok przewijania, to można zmienić przesunięcie treści (x i y pod "widokiem" w inspektorze rozmiaru), eksponując różne obszary przewijania w scenorysie, aby mogły być skonfigurowany. Problem rozwiązany! –

+0

Przykłady kodu byłyby świetne! :) – whoisgregg

+0

Dodano przykład kodu do zaimplementowania widoku do widoku przewijania programowo. – livingtech

1

To świetnie, że to rozwiązałeś. Gdybym miał taki problem, utworzyłbym widok, który ma taki sam rozmiar klatki jak rozmiar zawartości widoku przewijania. Dodaj wszystkie potrzebne elementy sterujące (przyciski, etykiety, pola tekstowe itp.) W żądanym położeniu. Po tym właśnie dodano widok na przewijanie, wykonaj IBOutlet przewijania i zaprogramuj jego rozmiar treści programowo gdzieś w moim kodzie, przed użyciem tego zwoju (ustawienie go w viewDidLoad będzie w porządku).

To kolejne rozwiązanie tego problemu.

+0

Też to lubię. Dam sobie szansę, gdy następnym razem znajdę się w takiej sytuacji. –

+0

To też zasugerowałem. – livingtech

1

@ T.J. & @livingtech:

Dlaczego nie używasz właściwości osadzania podanej w Kreatorze interfejsów?

Tutaj tworzysz dwa widoki (UIView largeView i UIScrollView scrollView). Więc jest to rodzaj marnowania pamięci na te same przedmioty.

enter image description here

  1. Pierwszy dodać jeszcze jeden UIView w stalówkę ze swojej wysokości i szerokości.
  2. Dodaj elementy sterujące w dowolnym miejscu. (powiedzmy tylko largeView)
  3. Następnie użyj właściwości embed z ScrollView.(powiedzmy tylko myScrollView)
  4. Teraz dodaj ten myScrollView w oryginalnym widoku, gdziekolwiek chcesz, z niestandardową wysokością i szerokością.
  5. W podstawie kodu ustaw tylko myScrollView contentSize według rozmiaru largeView.

Byłoby to łatwiejsze z punktu widzenia przydatności do ponownego użycia kodu i możliwości rozbudowy. Jeśli w przyszłości musisz dodać więcej obiektów.

+0

Nie jestem w 100% pewien, że śledzę cię tutaj, ale myślę, że jest to wciąż ta sama liczba obiektów, co sugerowałem. Jestem prawie pewien, że zawsze potrzebujesz 'UIView' do widoku zawartości twojego' UIScrollView'. – livingtech

+0

OP nie używa stalówki. Jeśli T.J. gdybyś mógł przeciągnąć widok przewijania na płótno stalówki, zmienić jego rozmiar itp., aby dopasować wszystkie widoki w nim, a następnie zmienić jego rozmiar i dodać go do widoku podrzędnego w kodzie lub przeciągnąć go jako subview wewnątrz stalówki przy użyciu widoku hierarchii (nie można tego zrobić, przeciągając i upuszczając rzeczywiste widżety widoku w obszarze roboczym). Ale ta strategia nie działa w edytorze scenorysów. – wkhatch

-1

Możesz pracować na pełnym ekranie iPada, jeśli zawartość nie przekracza zbyt dużego ekranu.

Powiązane problemy