5 ответов:
Он устанавливает расстояние вставки между видом содержимого и вложенным видом прокрутки.
aScrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 7.0);вот хороший iOS Reference Library article on scroll views что имеет информативный скриншот (рис 1-3) - я буду копировать его через текст здесь:
_|←_cW_→_|_↓_ | | --------------- |content| ↑ ↑ |content| contentInset.top cH |content| ↓ |content| contentInset.bottom |content| ↓ --------------- _|_______|___ ↑ (cH = contentSize.height; cW = contentSize.width)вид прокрутки заключает в себе представление содержимого плюс любое дополнение, предоставляемое указанными вставками содержимого.
хотя ответ jball является отличным описанием вставок контента, он не отвечает на вопрос о том, когда его использовать. Я позаимствую из его диаграмм:
_|←_cW_→_|_↓_ | | --------------- |content| ↑ ↑ |content| contentInset.top cH |content| ↓ |content| contentInset.bottom |content| ↓ --------------- |content| -------------↑-это то, что вы получаете, когда вы это делаете, но полезность этого показывает только при прокрутке:
_|←_cW_→_|_↓_ |content| ← content is still visible --------------- |content| ↑ ↑ |content| contentInset.top cH |content| ↓ |content| contentInset.bottom |content| ↓ --------------- _|_______|___ ↑эта верхняя строка содержимого по-прежнему будет видна, потому что она все еще находится внутри рамки прокрутки. Один из способов думать о верхнем смещении - "сколько нужно сдвинуть содержимое вниз по прокрутке, когда мы прокрутились до самого верха"
чтобы увидеть место, где это фактически используется, посмотрите на встроенное приложение для фотографий на iphone. Панель навигации и строка состояния прозрачны, а содержимое вида прокрутки отображается внизу. Это потому, что рамка прокрутки простирается так далеко. Но если бы не было вставки содержимого, вы никогда не смогли бы очистить верхнюю часть содержимого этой прозрачной панели навигации, когда вы идете до самого верха.
вставки содержимого решают проблему наличия содержимого, которое находится под другими частями пользовательского интерфейса и все же остается доступным с помощью полос прокрутки. Другими словами, Цель вставки содержимого состоит в том, чтобы сделать область взаимодействия меньше, чем ее фактическая площадь.
рассмотрим случай, когда у нас есть три логических областей экрана:
TOP BUTTONS TEXT BOTTOM TAB BARи мы хотим, чтобы текст никогда не появлялся прозрачно под верхними кнопками, но мы хотим, чтобы текст появляются под нижней панелью вкладок и все же позволяют прокручивать, чтобы мы могли обновить текст, сидящий прозрачно под нижней панелью вкладок.
затем мы установили бы верхнюю исходную точку ниже верхних кнопок и высоту, чтобы включить нижнюю часть нижней панели вкладок. Чтобы получить доступ к тексту, расположенному под содержимым нижней панели вкладок, мы бы установили нижнюю вставку на высоту нижней панели вкладок.
без вставки скроллер не позволит вам прокручивать вверх содержание достаточно, чтобы ввести в него. С вставкой, это как если бы содержимое имело дополнительный "пустой контент" размер вставки содержимого. Пустой текст был " вставлен "в реальное" содержание " - вот как я помню эту концепцию.
он используется для добавления заполнения в
UIScrollViewбез
contentInset, вид таблицы выглядит так:затем установить
contentInset:tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)эффект, как показано ниже:
кажется, лучше, верно?
и я пишу блог исследование
contentInset, критика приветствуется.
большой вопрос.
рассмотрим следующий пример (
scroller- это UIScrollView):float offset = 1000; [super viewDidLoad]; for (int i=0;i<500; i++) { UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(i * 100, 50, 95, 100)] autorelease]; [label setText:[NSString stringWithFormat:@"label %d",i]]; [self.scroller addSubview:label]; [self.scroller setContentSize:CGSizeMake(self.view.frame.size.width * 2 + offset, 0)]; [self.scroller setContentInset:UIEdgeInsetsMake(0, -offset, 0, 0)]; }вставки-это единственный способ заставить ваш скроллер иметь "окно" на содержимом, где вы его хотите. Я все еще возиться с этим примером кода, но идея есть: используйте вставки, чтобы получить "окно" на вашем
UIScrollView.


Comments