czy jest używany do dodawania wypełnienia do UIScrollView? Jeśli nie, mógłbyś podać mi praktyczny przykład. Mój problem nie polega na tym, jak to wdrożyć, ale kiedy to wdrożyć.
ForeignerBR
28
Tak, wypełnia zawartość wewnątrz widoku przewijania. Jest to podobne do paddingwłaściwości CSS .
Marc W
Przepraszam, że mogę na to poradzić, mogę przenieść to własne pytanie, ale na tej podstawie, co się właściwie stanie, jeśli ustawisz każdą wartość contentInset na 0 inną niż na przykład contentHeight? Czy to zmusza cały widok przewijania do wysokości, którą ustawiłeś?
jakev,
@jakev Nie, właściwość .frame steruje wymiarami widoku przewijania w ramach swojego elementu nadrzędnego (patrz odpowiedź: stackoverflow.com/questions/5361369/ ... ). Ustawienie parametru contentInsets na 0 dla wszystkich stron oznacza po prostu, że zawartość nie będzie w ogóle wypełniana w widoku przewijania. Więc kiedy przewijasz do góry, zawartość jest umieszczona tuż nad górną częścią widoku przewijania. Jeśli przewiniesz w dół, zawartość osiągnie prawy koniec widoku przewijania.
Jeremy Wiebe
czy możliwe jest zachowanie contentInset zawsze, nawet podczas przewijania, zawsze trzymaj marin to top (contenInset)
scrollView
86
Chociaż odpowiedź jball jest doskonałym opisem wstawek z treścią, nie odpowiada jednak na pytanie, kiedy z niej korzystać. Pożyczę z jego diagramów:
Ten górny wiersz treści będzie nadal widoczny, ponieważ nadal znajduje się w ramce widoku przewijania. Jednym ze sposobów wyobrażenia sobie górnego przesunięcia jest „o ile przesunąć zawartość w dół widoku przewijania, gdy jesteśmy przewijani do samego końca”
Aby zobaczyć miejsce, w którym jest to faktycznie używane, spójrz na wbudowaną aplikację Zdjęcia na iPhonie. Pasek nawigacji i pasek stanu są przezroczyste, a zawartość widoku przewijania jest widoczna pod spodem. Dzieje się tak, ponieważ ramka widoku przewijania rozciąga się tak daleko. Ale gdyby nie wstawka z treścią, nigdy nie byłbyś w stanie wyczyścić górnej części treści z przezroczystego paska nawigacyjnego po przejściu na samą górę.
Fajną rzeczą jest to, że możesz użyć wstawek do stworzenia efektu "przewijania pod paskiem stanu z rozmyciem".
TheEye
Przykład aplikacji do zdjęć był łatwy do zrozumienia.
abhimuralidharan
8
Wstawki treści rozwiązują problem polegający na tym, że zawartość znajduje się pod innymi częściami interfejsu użytkownika, a mimo to pozostaje dostępna za pomocą pasków przewijania. Innymi słowy, celem elementu Content Inset jest zmniejszenie obszaru interakcji niż jego rzeczywisty obszar.
Rozważmy przypadek, w którym mamy trzy logiczne obszary ekranu:
TOP BUTTONS
TEXT
BOTTOM TAB BAR
i chcemy, aby TEKST nigdy nie pojawiał się przezroczysto pod GÓRNYMI PRZYCISKAMI, ale chcemy, aby tekst znajdował się pod DOLNYM PASKIEM ZAKŁADKI, a mimo to umożliwiał przewijanie, abyśmy mogli zaktualizować tekst znajdujący się przezroczysto pod PASKIEM ZAKŁADKI DOLNYM.
Następnie ustawilibyśmy górny początek tak, aby znajdował się poniżej GÓRNYCH PRZYCISKÓW, a wysokość tak, aby obejmowała dół DOLNEGO PASKA ZAKŁADKI. Aby uzyskać dostęp do tekstu znajdującego się pod zawartością DOLNEGO PASKA ZAKŁADKI, ustawilibyśmy dolną wstawkę na wysokość DOLNEGO PASKA ZAKŁADKI.
Bez wstawki przewijak nie pozwoliłby na przewinięcie zawartości na tyle, aby można było do niej wpisać. W przypadku wstawki wygląda to tak, jakby treść miała dodatkową „PUSTĄ TREŚĆ” w rozmiarze wstawki z treścią. Pusty tekst został „wstawiony” w prawdziwą „treść” - tak pamiętam koncepcję.
Wstawki są JEDYNYM sposobem na wymuszenie na twoim przewijaniu "okienka" na zawartość, gdzie chcesz. Nadal majstruję przy tym przykładowym kodzie, ale idea jest taka: użyj wstawek, aby uzyskać "okno" na swoim UIScrollView.
padding
właściwości CSS .Chociaż odpowiedź jball jest doskonałym opisem wstawek z treścią, nie odpowiada jednak na pytanie, kiedy z niej korzystać. Pożyczę z jego diagramów:
To właśnie dostajesz, kiedy to robisz, ale użyteczność tego pokazuje się tylko podczas przewijania:
Ten górny wiersz treści będzie nadal widoczny, ponieważ nadal znajduje się w ramce widoku przewijania. Jednym ze sposobów wyobrażenia sobie górnego przesunięcia jest „o ile przesunąć zawartość w dół widoku przewijania, gdy jesteśmy przewijani do samego końca”
Aby zobaczyć miejsce, w którym jest to faktycznie używane, spójrz na wbudowaną aplikację Zdjęcia na iPhonie. Pasek nawigacji i pasek stanu są przezroczyste, a zawartość widoku przewijania jest widoczna pod spodem. Dzieje się tak, ponieważ ramka widoku przewijania rozciąga się tak daleko. Ale gdyby nie wstawka z treścią, nigdy nie byłbyś w stanie wyczyścić górnej części treści z przezroczystego paska nawigacyjnego po przejściu na samą górę.
źródło
Wstawki treści rozwiązują problem polegający na tym, że zawartość znajduje się pod innymi częściami interfejsu użytkownika, a mimo to pozostaje dostępna za pomocą pasków przewijania. Innymi słowy, celem elementu Content Inset jest zmniejszenie obszaru interakcji niż jego rzeczywisty obszar.
Rozważmy przypadek, w którym mamy trzy logiczne obszary ekranu:
i chcemy, aby TEKST nigdy nie pojawiał się przezroczysto pod GÓRNYMI PRZYCISKAMI, ale chcemy, aby tekst znajdował się pod DOLNYM PASKIEM ZAKŁADKI, a mimo to umożliwiał przewijanie, abyśmy mogli zaktualizować tekst znajdujący się przezroczysto pod PASKIEM ZAKŁADKI DOLNYM.
Następnie ustawilibyśmy górny początek tak, aby znajdował się poniżej GÓRNYCH PRZYCISKÓW, a wysokość tak, aby obejmowała dół DOLNEGO PASKA ZAKŁADKI. Aby uzyskać dostęp do tekstu znajdującego się pod zawartością DOLNEGO PASKA ZAKŁADKI, ustawilibyśmy dolną wstawkę na wysokość DOLNEGO PASKA ZAKŁADKI.
Bez wstawki przewijak nie pozwoliłby na przewinięcie zawartości na tyle, aby można było do niej wpisać. W przypadku wstawki wygląda to tak, jakby treść miała dodatkową „PUSTĄ TREŚĆ” w rozmiarze wstawki z treścią. Pusty tekst został „wstawiony” w prawdziwą „treść” - tak pamiętam koncepcję.
źródło
Służy do dodawania dopełnienia
UIScrollView
Bez
contentInset
widoku tabeli wygląda to następująco:Następnie ustaw
contentInset
:Efekt jest jak poniżej:
Wydaje się, że jest lepiej, prawda?
I piszę bloga, żeby przestudiować
contentInset
, krytyka jest mile widziana.źródło
Świetne pytanie.
Rozważmy następujący przykład (
scroller
to UIScrollView):Wstawki są JEDYNYM sposobem na wymuszenie na twoim przewijaniu "okienka" na zawartość, gdzie chcesz. Nadal majstruję przy tym przykładowym kodzie, ale idea jest taka: użyj wstawek, aby uzyskać "okno" na swoim
UIScrollView
.źródło