UICollectionViewLayout
Наследование
-
NSObject
-
UICollectionViewLayout
-
UICollectionViewFlowLayout
-
UICollectionViewTransitionLayout
-
NSObject
-
UICollectionViewLayout
-
UICollectionViewFlowLayout
-
UICollectionViewTransitionLayout
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSObjectProtocol
-
Печатаемый
-
NSCoding
-
NSObject
Оператор импорта
Swift
import UIKit
Objective C
@import UIKit;
Доступность
Доступный в iOS 6.0 и позже.
UICollectionViewLayout
класс является абстрактным базовым классом, который Вы разделяете на подклассы и используете для генерации информации макета для представления набора. Задание объекта расположения должно определить размещение ячеек, дополнительные представления и представления художественного оформления в границах представления набора и сообщать ту информацию представлению набора, когда спросили. Представление набора тогда применяет предоставленную информацию макета к соответствующим представлениям так, чтобы они могли быть представлены на экране.
Необходимо разделить на подклассы UICollectionViewLayout
для использования его. Перед рассмотрением разделения на подклассы, тем не менее, необходимо посмотреть на UICollectionViewFlowLayout
класс, чтобы видеть, может ли это быть адаптировано к Вашим потребностям расположения.
Разделение на подклассы примечаний
Основное задание объекта расположения должно предоставить информацию о позиции и визуальном состоянии элементов в представлении набора. Объект расположения не создает представления, для которых он обеспечивает расположение. Те представления создаются источником данных представления набора. Вместо этого объект расположения определяет позицию и размер визуальных элементов на основе проекта расположения.
Представления набора имеют три типа визуальных элементов, которые должны быть размечены:
Ячейки являются основными элементами, расположенными расположением. Каждая ячейка представляет единственный элемент данных в наборе. Представление набора может иметь единственную группу ячеек, или оно может разделить те ячейки на многократные разделы. Основное задание объекта расположения должно расположить ячейки в предметной области представления набора.
Дополнительные представления представляют данные, но отличаются, чем ячейки. В отличие от ячеек, дополнительные представления не могут быть выбраны пользователем. Вместо этого Вы используете дополнительные представления для реализации вещей как заголовок и представления нижнего колонтитула для данного раздела или для всего представления набора. Дополнительные представления являются дополнительными и их использование, и размещение определяется объектом расположения.
Представления художественного оформления являются визуальными украшениями, которые не могут быть выбраны и по сути не связываются к данным представления набора. Представления художественного оформления являются другим типом дополнительного представления. Как дополнительные представления, они являются дополнительными и их использование, и размещение определяется объектом расположения.
Представление набора спрашивает свой объект расположения обеспечить информацию макета для этих элементов во многие различные разы. Каждая ячейка и представление, появляющееся на экране, расположены с помощью информации от объекта расположения. Точно так же каждый раз, когда элементы вставлены в или удалены из представления набора, дополнительное расположение происходит для элементов, добавляемых или удаленных. Однако представление набора всегда ограничивает расположение объектами, которые видимы на экране.
Методы для переопределения
Каждый объект расположения должен реализовать следующие методы:
layoutAttributesForSupplementaryViewOfKind:atIndexPath:
(если Ваше расположение поддерживает дополнительные представления),layoutAttributesForDecorationViewOfKind:atIndexPath:
(если Ваше расположение поддерживает представления художественного оформления),
Эти методы обеспечивают фундаментальную информацию макета, что представление набора должно поместить содержание в экран. Конечно, если Ваше расположение не поддерживает дополнительный или представления художественного оформления, не реализуйте соответствующие методы.
Когда данные в изменениях представления набора и элементах должны быть вставлены или удалены, представление набора спрашивает свой объект расположения обновить информацию макета. В частности любой элемент, перемещенный, добавил или удалил, должны были обновить его информацию макета для отражения его нового расположения. Для перемещенных элементов представление набора использует стандартные методы получить обновленные атрибуты макета элемента. Для элементов, вставляемых или удаленных, представление набора вызывает некоторые различные методы, которые необходимо переопределить для обеспечения надлежащей информации макета:
initialLayoutAttributesForAppearingSupplementaryElementOfKind:atIndexPath:
initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:
finalLayoutAttributesForDisappearingSupplementaryElementOfKind:atIndexPath:
finalLayoutAttributesForDisappearingDecorationElementOfKind:atIndexPath:
В дополнение к этим методам можно также переопределить prepareForCollectionViewUpdates:
обработать любую связанную с расположением подготовку. Можно также переопределить finalizeCollectionViewUpdates
метод и использование это, чтобы добавить анимации к полному блоку анимации или реализовать любые заключительные связанные с расположением задачи.
Оптимизация производительности расположения Используя контексты аннулирования
При разработке пользовательских макетов можно улучшить производительность путем лишения законной силы только тех частей фактически изменившегося расположения. Когда Вы изменяете элементы, вызывая invalidateLayout
метод вынуждает представление набора повторно вычислить всю свою информацию макета и повторно применить его. Лучшее решение состоит в том, чтобы повторно вычислить только информацию макета, изменившуюся, который является точно, что контексты аннулирования позволяют Вам делать. Контекст аннулирования позволяет Вам указать, какие части расположения изменились. Объект расположения может тогда использовать ту информацию для минимизации объема данных, который это повторно вычисляет.
Для определения пользовательского контекста аннулирования для расположения разделите на подклассы UICollectionViewLayoutInvalidationContext
класс. В Вашем подклассе определите пользовательские свойства, представляющие части Ваших данных расположения, которые могут быть повторно вычислены независимо. Когда необходимо лишить законной силы расположение во время выполнения, создать экземпляр подкласса контекста аннулирования, сконфигурировать пользовательские свойства на основе того, что информация макета изменила, и передача, которые возражают против расположения invalidateLayoutWithContext:
метод. Ваша пользовательская реализация того метода может использовать информацию в контексте аннулирования, чтобы повторно вычислить только части Вашего изменившегося расположения.
При определении пользовательского класса контекста аннулирования для объекта расположения необходимо также переопределить invalidationContextClass
метод и возврат Ваш пользовательский класс. Представление набора всегда создает экземпляр класса, который Вы указываете, когда этому нужен контекст аннулирования. Возврат Вашего пользовательского подкласса от этого метода гарантирует, что Ваш объект расположения всегда имеет контекст аннулирования, который это ожидает.
-
collectionView
СвойствоПредставление набора в настоящее время возражает использующий этот объект расположения. (только для чтения)
Объявление
Swift
var collectionView: UICollectionView? { get }
Objective C
@property(nonatomic, readonly) UICollectionView *collectionView
Обсуждение
Объект представления набора устанавливает значение этого свойства, когда новый объект расположения присваивается ему.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает ширину и высоту содержания представления набора.
Объявление
Swift
func collectionViewContentSize() -> CGSize
Objective C
- (CGSize)collectionViewContentSize
Возвращаемое значение
Ширина и высота содержания представления набора.
Обсуждение
Подклассы должны переопределить этот метод и использовать его для возврата ширины и высоты содержания представления набора. Эти значения представляют ширину и высоту всего содержания, не только содержания, которое в настоящее время видимо. Представление набора использует эту информацию для конфигурирования ее собственного размера содержания для прокрутки целей.
Реализация по умолчанию этого метода возвраты
CGSizeZero
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает класс для использования при создании объектов атрибутов макета.
Объявление
Swift
class func layoutAttributesClass() -> AnyClass
Objective C
+ (Class)layoutAttributesClass
Возвращаемое значение
Класс для использования для объектов атрибутов макета.
Обсуждение
Если Вы разделяете на подклассы
UICollectionViewLayoutAttributes
для управления дополнительными атрибутами макета необходимо переопределить этот метод и возвратить пользовательский подкласс. Методы для создания атрибутов макета используют этот класс при создании новых объектов атрибутов макета.Этот метод предназначает для подклассификаторов только и не должен вызывать Ваш код.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Говорит объекту расположения обновить текущий макет.
Объявление
Swift
func prepareLayout()
Objective C
- (void)prepareLayout
Обсуждение
Обновления расположения происходят в первый раз, когда представление набора представляет свое содержание и каждый раз, когда расположение лишено законной силы явно или неявно из-за изменения в представлении. Во время каждого обновления расположения, вызовы представления набора этот метод сначала для предоставления расположения возражают шансу подготовиться к предстоящей работе расположения.
Реализация по умолчанию этого метода ничего не делает. Подклассы могут переопределить его и использовать, это, чтобы установить структуры данных или выполнить любые начальные вычисления должно было выполнить расположение позже.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает атрибуты макета для всех ячеек и представлений в указанном прямоугольнике.
Объявление
Swift
func layoutAttributesForElementsInRect(_
rect
: CGRect) -> [AnyObject]?Параметры
rect
Прямоугольник (указанный в системе координат представления набора) содержащий целевые представления.
Возвращаемое значение
Массив
UICollectionViewLayoutAttributes
объекты, представляющие информацию макета для ячеек и представлений. Возвраты реализации по умолчаниюnil
.Обсуждение
Подклассы должны переопределить этот метод и использовать его для возврата информации макета для всех элементов, представление которых пересекает указанный прямоугольник. Ваша реализация должна возвратить атрибуты для всех визуальных элементов, включая ячейки, дополнительные представления и представления художественного оформления.
При создании атрибутов макета всегда создавайте объект атрибутов, представляющий корректный тип элемента (ячейка, дополнительная, или художественное оформление). Представление набора дифференцируется между атрибутами для каждого типа и использует ту информацию для принятия решений, о которых представления для создания, и как можно управлять ими.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает атрибуты макета для элемента в указанном индексном пути.
Объявление
Swift
func layoutAttributesForItemAtIndexPath(_
indexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes!Objective C
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)
indexPath
Параметры
indexPath
Индексный путь элемента.
Возвращаемое значение
Объект атрибутов макета, содержащий информацию для применения к ячейке элемента.
Обсуждение
Подклассы должны переопределить этот метод и использовать его для возврата информации макета для элементов в представлении набора. Вы используете этот метод для обеспечения информации макета только для элементов, имеющих соответствующую ячейку. Не используйте его для дополнительных представлений или представлений художественного оформления.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
layoutAttributesForSupplementaryViewOfKind (_: atIndexPath:) - layoutAttributesForSupplementaryViewOfKind:atIndexPath:
Возвращает атрибуты макета для указанного дополнительного представления.
Объявление
Swift
func layoutAttributesForSupplementaryViewOfKind(_
kind
: String, atIndexPathindexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes!Objective C
- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)
kind
atIndexPath:(NSIndexPath *)indexPath
Параметры
kind
Строка, идентифицирующая тип дополнительного представления.
indexPath
Индексный путь представления.
Возвращаемое значение
Объект атрибутов макета, содержащий информацию для применения к дополнительному представлению.
Обсуждение
Если Ваш объект расположения определяет какие-либо дополнительные представления, необходимо переопределить этот метод и использовать его для возврата информации макета для тех представлений.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
layoutAttributesForDecorationViewOfKind (_: atIndexPath:) - layoutAttributesForDecorationViewOfKind:atIndexPath:
Возвращает атрибуты макета для указанного представления художественного оформления.
Объявление
Swift
func layoutAttributesForDecorationViewOfKind(_
decorationViewKind
: String, atIndexPathindexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes!Objective C
- (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)
decorationViewKind
atIndexPath:(NSIndexPath *)indexPath
Параметры
decorationViewKind
Строка, идентифицирующая тип представления художественного оформления.
indexPath
Индексный путь представления художественного оформления.
Возвращаемое значение
Объект атрибутов макета, содержащий информацию для применения к представлению художественного оформления.
Обсуждение
Если Ваш объект расположения определяет какие-либо представления художественного оформления, необходимо переопределить этот метод и использовать его для возврата информации макета для тех представлений.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает смещение содержания для использования после анимированного обновления расположения или изменения.
Объявление
Параметры
proposedContentOffset
Предложенная точка (в координатном пространстве представления содержания представления набора) для верхнего левого угла видимого содержания. Это представляет точку, которую представление набора вычислило как наиболее вероятное значение для использования в конце анимации.
Возвращаемое значение
Смещение содержания, которое Вы хотите использовать вместо этого. Реализация по умолчанию этого метода возвращает значение в
proposedContentOffset
параметр.Обсуждение
Во время обновлений расположения, или при переходе между разметками, представление набора вызывает этот метод, чтобы дать Вам возможность изменить предложенное смещение содержания для использования в конце анимации. Вы могли бы переопределить этот метод, если анимации или переход могли бы заставить элементы быть расположенными в путь, который не оптимален для Вашего проекта.
Представление набора вызывает этот метод после вызова
prepareLayout
иcollectionViewContentSize
методы.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
targetContentOffsetForProposedContentOffset (_: withScrollingVelocity:) - targetContentOffsetForProposedContentOffset:withScrollingVelocity:
Возвращает точку, в которой можно прекратить прокручивать.
Объявление
Параметры
proposedContentOffset
Предложенная точка (в представлении содержания представления набора), в котором можно прекратить прокручивать. Это - значение, в котором естественно остановилась бы прокрутка, если бы не были внесены никакие корректировки. Точка отражает верхний левый угол видимого содержания.
velocity
Текущая скорость прокрутки и вдоль горизонтальных и вдоль вертикальных осей. Это значение измеряется в точках в секунду.
Возвращаемое значение
Смещение содержания, которое Вы хотите использовать вместо этого. Это значение отражает скорректированный верхний левый угол видимой области. Реализация по умолчанию этого метода возвращает значение в
proposedContentOffset
параметр.Обсуждение
Если Вы хотите поведение прокрутки хватать к определенным границам, можно переопределить этот метод и использовать его для изменения точки, в которой можно остановиться. Например, Вы могли бы использовать этот метод, чтобы всегда прекратить прокручивать на границе между элементами, в противоположность остановке посреди элемента.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Уведомляет, что расположение возражает, что содержание представления набора собирается измениться.
Объявление
Swift
func prepareForCollectionViewUpdates(_
updateItems
: [AnyObject]!)Objective C
- (void)prepareForCollectionViewUpdates:(NSArray *)
updateItems
Параметры
updateItems
Массив
UICollectionViewUpdateItem
объекты, идентифицирующие внесенные изменения.Обсуждение
Когда элементы вставлены или удалены, представление набора уведомляет свой объект расположения так, чтобы оно могло скорректировать расположение по мере необходимости. Первый шаг в том процессе должен вызвать этот метод для уведомления объекта расположения что изменения ожидать. После этого дополнительные вызовы выполняются для сбора информации макета для вставленных, удаленных, и перемещенных элементов, бывших анимированными вокруг представления набора.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Выполняет любые дополнительные анимации, или очистите необходимый во время обновления представления набора.
Объявление
Swift
func finalizeCollectionViewUpdates()
Objective C
- (void)finalizeCollectionViewUpdates
Обсуждение
Представление набора вызывает этот метод как последний шаг прежде, чем предшествовать для анимации любых изменений в место. Этот метод вызывают в блоке анимации, используемом для выполнения всей вставки, удаления и анимаций перемещения, таким образом, можно создать дополнительные анимации с помощью этого метода по мере необходимости. Иначе, можно использовать его для выполнения любых последних задач, связанных с управлением информацией объекта расположения состояния.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает массив индексных путей для дополнительных представлений, которые Вы хотите добавить к расположению.
Объявление
Swift
func indexPathsToInsertForSupplementaryViewOfKind(_
kind
: String) -> [AnyObject]Параметры
kind
Определенный тип дополнительного представления.
Возвращаемое значение
Массив
NSIndexPath
объекты, указывающие расположение новых дополнительных представлений или пустого массива, если Вы не хотите добавлять какие-либо дополнительные представления.Обсуждение
Представление набора вызывает этот метод каждый раз, когда Вы добавляете ячейки или разделы к представлению набора. Реализация этого метода дает Вашему объекту расположения возможность добавить новые дополнительные представления для дополнения дополнений.
Представление набора вызывает этот метод между своими вызовами к
prepareForCollectionViewUpdates:
иfinalizeCollectionViewUpdates
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Возвращает массив индексных путей, представляющих представления художественного оформления для добавления.
Объявление
Swift
func indexPathsToInsertForDecorationViewOfKind(_
kind
: String) -> [AnyObject]Параметры
kind
Определенный тип представления художественного оформления.
Возвращаемое значение
Массив
NSIndexPath
объекты, указывающие расположение новых представлений художественного оформления или пустого массива, если Вы не хотите добавлять какие-либо представления художественного оформления.Обсуждение
Представление набора вызывает этот метод каждый раз, когда Вы добавляете ячейки или разделы к представлению набора. Реализация этого метода дает Вашему объекту расположения возможность добавить новые представления художественного оформления для дополнения дополнений.
Представление набора вызывает этот метод между своими вызовами к
prepareForCollectionViewUpdates:
иfinalizeCollectionViewUpdates
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
initialLayoutAttributesForAppearingItemAtIndexPath (_:) - initialLayoutAttributesForAppearingItemAtIndexPath:
Возвращает стартовую информацию макета для элемента, вставляемого в представление набора.
Объявление
Swift
func initialLayoutAttributesForAppearingItemAtIndexPath(_
itemIndexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes?Objective C
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)
itemIndexPath
Параметры
itemIndexPath
Индексный путь вставляемого элемента. Можно использовать этот путь для определения местоположения элемента в источнике данных представления набора.
Возвращаемое значение
Объект атрибутов макета, описывающий позицию, в которой можно поместить соответствующую ячейку.
Обсуждение
Этот метод вызывают после
prepareForCollectionViewUpdates:
метод и передfinalizeCollectionViewUpdates
метод для любых элементов, собирающихся быть вставленными. Ваша реализация должна возвратить информацию макета, описывающую начальную позицию и состояние элемента. Представление набора использует эту информацию в качестве начальной точки для любых анимаций. (Конечная точка анимации является новым расположением элемента в представлении набора.), Если Вы возвращаетесьnil
, объект расположения использует заключительные атрибуты элемента и для запуска и для конечных точек анимации.Реализация по умолчанию этого метода возвраты
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
initialLayoutAttributesForAppearingSupplementaryElementOfKind (_: atIndexPath:) - initialLayoutAttributesForAppearingSupplementaryElementOfKind:atIndexPath:
Возвращает стартовую информацию макета для дополнительного представления, вставляемого в представление набора.
Объявление
Swift
func initialLayoutAttributesForAppearingSupplementaryElementOfKind(_
elementKind
: String, atIndexPathelementIndexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes?Objective C
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingSupplementaryElementOfKind:(NSString *)
elementKind
atIndexPath:(NSIndexPath *)elementIndexPath
Параметры
elementKind
Строка, идентифицирующая тип дополнительного представления.
elementIndexPath
Индексный путь вставляемого элемента.
Возвращаемое значение
Объект атрибутов макета, описывающий позицию, в которой можно поместить соответствующее дополнительное представление.
Обсуждение
Этот метод вызывают после
prepareForCollectionViewUpdates:
метод и передfinalizeCollectionViewUpdates
метод для любых дополнительных представлений, собирающихся быть вставленными. Ваша реализация должна возвратить информацию макета, описывающую начальную позицию и состояние представления. Представление набора использует эту информацию в качестве начальной точки для любых анимаций. (Конечная точка анимации является новым расположением представления в представлении набора.), Если Вы возвращаетесьnil
, объект расположения использует заключительные атрибуты элемента и для запуска и для конечных точек анимации.Реализация по умолчанию этого метода возвраты
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
initialLayoutAttributesForAppearingDecorationElementOfKind (_: atIndexPath:) - initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:
Возвращает стартовую информацию макета для представления художественного оформления, вставляемого в представление набора.
Объявление
Swift
func initialLayoutAttributesForAppearingDecorationElementOfKind(_
elementKind
: String, atIndexPathelementIndexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes?Objective C
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingDecorationElementOfKind:(NSString *)
elementKind
atIndexPath:(NSIndexPath *)elementIndexPath
Параметры
elementKind
Строка, идентифицирующая тип представления художественного оформления.
elementIndexPath
Индексный путь вставляемого элемента.
Возвращаемое значение
Объект атрибутов макета, описывающий позицию, в которой можно поместить соответствующее представление художественного оформления.
Обсуждение
Этот метод вызывают после
prepareForCollectionViewUpdates:
метод и передfinalizeCollectionViewUpdates
метод для любых представлений художественного оформления, собирающихся быть вставленными. Ваша реализация должна возвратить информацию макета, описывающую начальную позицию и состояние представления. Представление набора использует эту информацию в качестве начальной точки для любых анимаций. (Конечная точка анимации является новым расположением представления в представлении набора.), Если Вы возвращаетесьnil
, объект расположения использует заключительные атрибуты элемента и для запуска и для конечных точек анимации.Реализация по умолчанию этого метода возвраты
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает массив индексных путей, представляющих дополнительные представления для удаления.
Объявление
Swift
func indexPathsToDeleteForSupplementaryViewOfKind(_
kind
: String) -> [AnyObject]Параметры
kind
Определенный тип дополнительного представления.
Возвращаемое значение
Массив
NSIndexPath
объекты, указывающие дополнительные представления, которые Вы хотите удалить или пустой массив, если Вы не хотите удалять какие-либо представления данного вида.Обсуждение
Представление набора вызывает этот метод каждый раз, когда Вы удаляете ячейки или разделы к представлению набора. Реализация этого метода дает Вашему объекту расположения возможность удалить любые дополнительные представления, которые больше не необходимы.
Представление набора вызывает этот метод между своими вызовами к
prepareForCollectionViewUpdates:
иfinalizeCollectionViewUpdates
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Возвращает массив индексных путей, представляющих представления художественного оформления для удаления.
Объявление
Swift
func indexPathsToDeleteForDecorationViewOfKind(_
kind
: String) -> [AnyObject]Параметры
kind
Определенный тип представления художественного оформления.
Возвращаемое значение
Массив
NSIndexPath
объекты, указывающие представления художественного оформления, которые Вы хотите удалить или пустой массив, если Вы не хотите удалять какие-либо представления данного вида.Обсуждение
Представление набора вызывает этот метод каждый раз, когда Вы удаляете ячейки или разделы к представлению набора. Реализация этого метода дает Вашему объекту расположения возможность удалить любые представления художественного оформления, которые больше не необходимы.
Представление набора вызывает этот метод между своими вызовами к
prepareForCollectionViewUpdates:
иfinalizeCollectionViewUpdates
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
finalLayoutAttributesForDisappearingItemAtIndexPath (_:) - finalLayoutAttributesForDisappearingItemAtIndexPath:
Возвращает заключительную информацию макета для элемента, собирающегося быть удаленным из представления набора.
Объявление
Swift
func finalLayoutAttributesForDisappearingItemAtIndexPath(_
itemIndexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes?Objective C
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)
itemIndexPath
Параметры
itemIndexPath
Индексный путь удаляемого элемента.
Возвращаемое значение
Объект атрибутов макета, описывающий позицию ячейки для использования в качестве конечной точки для анимации ее удаления.
Обсуждение
Этот метод вызывают после
prepareForCollectionViewUpdates:
метод и передfinalizeCollectionViewUpdates
метод для любых элементов, собирающихся быть удаленными. Ваша реализация должна возвратить информацию макета, описывающую заключительную позицию и состояние элемента. Представление набора использует эту информацию в качестве конечной точки для любых анимаций. (Начальная точка анимации является текущим расположением элемента.), Если Вы возвращаетесьnil
, объект расположения использует те же атрибуты и для запуска и для конечных точек анимации.Реализация по умолчанию этого метода возвраты
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
finalLayoutAttributesForDisappearingSupplementaryElementOfKind (_: atIndexPath:) - finalLayoutAttributesForDisappearingSupplementaryElementOfKind:atIndexPath:
Возвращает заключительную информацию макета для дополнительного представления, собирающегося быть удаленным из представления набора.
Объявление
Swift
func finalLayoutAttributesForDisappearingSupplementaryElementOfKind(_
elementKind
: String, atIndexPathelementIndexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes?Objective C
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingSupplementaryElementOfKind:(NSString *)
elementKind
atIndexPath:(NSIndexPath *)elementIndexPath
Параметры
elementKind
Строка, идентифицирующая тип дополнительного представления.
elementIndexPath
Индексный путь удаляемого представления.
Возвращаемое значение
Объект атрибутов макета, описывающий позицию дополнительного представления для использования в качестве конечной точки для анимации ее удаления.
Обсуждение
Этот метод вызывают после
prepareForCollectionViewUpdates:
метод и передfinalizeCollectionViewUpdates
метод для любых дополнительных представлений, собирающихся быть удаленными. Ваша реализация должна возвратить информацию макета, описывающую заключительную позицию и состояние представления. Представление набора использует эту информацию в качестве конечной точки для любых анимаций. (Начальная точка анимации является текущим расположением представления.), Если Вы возвращаетесьnil
, объект расположения использует те же атрибуты и для запуска и для конечных точек анимации.Реализация по умолчанию этого метода возвраты
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
finalLayoutAttributesForDisappearingDecorationElementOfKind (_: atIndexPath:) - finalLayoutAttributesForDisappearingDecorationElementOfKind:atIndexPath:
Возвращает заключительную информацию макета для представления художественного оформления, собирающегося быть удаленным из представления набора.
Объявление
Swift
func finalLayoutAttributesForDisappearingDecorationElementOfKind(_
elementKind
: String, atIndexPathelementIndexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes?Objective C
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingDecorationElementOfKind:(NSString *)
elementKind
atIndexPath:(NSIndexPath *)elementIndexPath
Параметры
elementKind
Строка, идентифицирующая тип представления художественного оформления.
elementIndexPath
Индексный путь удаляемого представления.
Возвращаемое значение
Объект атрибутов макета, описывающий позицию представления художественного оформления для использования в качестве конечной точки для анимации ее удаления.
Обсуждение
Этот метод вызывают после
prepareForCollectionViewUpdates:
метод и передfinalizeCollectionViewUpdates
метод для любых представлений художественного оформления, собирающихся быть удаленными. Ваша реализация должна возвратить информацию макета, описывающую заключительную позицию и состояние представления. Представление набора использует эту информацию в качестве конечной точки для любых анимаций. (Начальная точка анимации является текущим расположением представления.), Если Вы возвращаетесьnil
, объект расположения использует те же атрибуты и для запуска и для конечных точек анимации.Реализация по умолчанию этого метода возвраты
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Лишает законной силы текущий макет и инициировал обновление расположения.
Объявление
Swift
func invalidateLayout()
Objective C
- (void)invalidateLayout
Обсуждение
Можно вызвать этот метод в любое время для обновления информации макета. Этот метод лишает законной силы расположение самого представления набора и возвращается сразу же. Таким образом можно вызвать этот метод многократно от того же блока кода, не инициировав многократные обновления расположения. Фактическое обновление расположения происходит во время следующего цикла обновления расположения представления.
При переопределении этого метода необходимо вызвать
super
в некоторый момент в Вашей реализации.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Лишает законной силы текущий макет с помощью информации в предоставленном объекте контекста.
Объявление
Swift
func invalidateLayoutWithContext(_
context
: UICollectionViewLayoutInvalidationContext)Objective C
- (void)invalidateLayoutWithContext:(UICollectionViewLayoutInvalidationContext *)
context
Параметры
context
Объект контекста, указывающий, который части расположения обновиться.
Обсуждение
Реализация по умолчанию этого метода оптимизирует процесс создания макета с помощью основных свойств
UICollectionViewLayoutInvalidationContext
класс. Если Вы определяете пользовательский объект контекста для своего расположения, переопределяете этот метод и применяете какие-либо пользовательские свойства объекта контекста к Вашим вычислениям расположения.При переопределении этого метода необходимо вызвать
super
в некоторый момент в Вашей реализации.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Возвращает класс для использования при создании контекста аннулирования для расположения.
Объявление
Swift
class func invalidationContextClass() -> AnyClass
Objective C
+ (Class)invalidationContextClass
Обсуждение
Если Вы разделяете на подклассы
UICollectionViewLayout
и используйте пользовательский объект контекста аннулирования, чтобы улучшить производительность Ваших обновлений расположения, переопределить этот метод и возвратить ВашUICollectionViewLayoutInvalidationContext
подкласс. Когда представление набора должно лишить законной силы Ваше расположение, оно использует класс, который Вы обеспечиваете для создания надлежащего объекта контекста аннулирования.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Если новые границы требуют обновления расположения, спрашивает объект расположения.
Объявление
Swift
func shouldInvalidateLayoutForBoundsChange(_
newBounds
: CGRect) -> BoolObjective C
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)
newBounds
Параметры
newBounds
Новые границы представления набора.
Возвращаемое значение
YES
true
если представление набора требует обновления расположения илиNO
false
если не должно изменяться расположение.Обсуждение
Реализация по умолчанию этого метода возвраты
NO
false
. Подклассы могут переопределить его и возвратить надлежащее значение на основе того, требуют ли изменения в границах представления набора изменений в расположении ячеек и дополнительных представлениях.Если границы набора просматривают изменение и этот метод возвраты
YES
true
, представление набора лишает законной силы расположение путем вызоваinvalidateLayoutWithContext:
метод.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
См. также
-
Возвращает объект контекста, определяющий части расположения, которое должно измениться, когда происходит изменение границ.
Объявление
Swift
func invalidationContextForBoundsChange(_
newBounds
: CGRect) -> UICollectionViewLayoutInvalidationContextObjective C
- (UICollectionViewLayoutInvalidationContext *)invalidationContextForBoundsChange:(CGRect)
newBounds
Параметры
newBounds
Новые границы для представления набора.
Возвращаемое значение
Контекст аннулирования, описывающий изменения, которые должны быть внесены. Не возвращайте ноль.
Обсуждение
Реализация по умолчанию этого метода создает экземпляр класса, предоставленного
invalidationContextClass
метод класса и возвраты это. Если Вы хотите использовать пользовательский объект контекста аннулирования со своим расположением, всегда переопределите тот метод и возвратите Ваш пользовательский класс.Если Вы хотите создать и сконфигурировать Ваш пользовательский контекст аннулирования в ответ на изменение границ, можно переопределить этот метод. При переопределении этого метода необходимо вызвать
super
сначала заставить объект контекста аннулирования возвращаться. После получения этого объекта, набор любые пользовательские свойства и возврат это.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
См. также
-
shouldInvalidateLayoutForPreferredLayoutAttributes (_: withOriginalAttributes:) - shouldInvalidateLayoutForPreferredLayoutAttributes:withOriginalAttributes:
Если изменения в ячейке самокалибровки требуют обновления расположения, спрашивает объект расположения.
Объявление
Swift
func shouldInvalidateLayoutForPreferredLayoutAttributes(_
preferredAttributes
: UICollectionViewLayoutAttributes, withOriginalAttributesoriginalAttributes
: UICollectionViewLayoutAttributes) -> BoolObjective C
- (BOOL)shouldInvalidateLayoutForPreferredLayoutAttributes:(UICollectionViewLayoutAttributes *)
preferredAttributes
withOriginalAttributes:(UICollectionViewLayoutAttributes *)originalAttributes
Параметры
preferredAttributes
Атрибуты макета, возвращенные ячейкой
preferredLayoutAttributesFittingAttributes:
метод.originalAttributes
Атрибуты, которым расположение возражает первоначально предложенный для ячейки.
Возвращаемое значение
YES
true
если расположение должно быть лишено законной силы илиNO
false
если это не должно.Обсуждение
Когда представление набора включает ячейки самокалибровки, ячейкам дают возможность изменить их собственные атрибуты макета, прежде чем будут применены те атрибуты. Ячейка самокалибровки могла бы сделать это для указания различного размера ячейки, чем тот, который обеспечивает объект расположения. Когда ячейка обеспечивает различный набор атрибутов, представление набора вызывает этот метод, чтобы определить, требует ли изменение ячейки большего обновления расположения.
При реализации пользовательского макета можно переопределить этот метод и использовать его, чтобы определить, должно ли расположение быть лишено законной силы на основе указанных атрибутов. Реализация по умолчанию этого метода возвраты
NO
false
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 8.0 и позже.
-
invalidationContextForPreferredLayoutAttributes (_: withOriginalAttributes:) - invalidationContextForPreferredLayoutAttributes:withOriginalAttributes:
Возвращает объект контекста, определяющий части расположения, которое должно измениться в ответ на динамические изменения ячеек.
Объявление
Swift
func invalidationContextForPreferredLayoutAttributes(_
preferredAttributes
: UICollectionViewLayoutAttributes, withOriginalAttributesoriginalAttributes
: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutInvalidationContextObjective C
- (UICollectionViewLayoutInvalidationContext *)invalidationContextForPreferredLayoutAttributes:(UICollectionViewLayoutAttributes *)
preferredAttributes
withOriginalAttributes:(UICollectionViewLayoutAttributes *)originalAttributes
Параметры
preferredAttributes
Атрибуты макета, возвращенные ячейкой
preferredLayoutAttributesFittingAttributes:
метод.originalAttributes
Атрибуты, которым расположение возражает первоначально предложенный для ячейки.
Возвращаемое значение
Контекст аннулирования, включающий информацию о том, какие изменения должны быть внесены в расположение.
Обсуждение
Реализация по умолчанию этого метода создает экземпляр класса, предоставленного
invalidationContextClass
метод класса и возвраты это. Если Вы хотите использовать пользовательский объект контекста аннулирования со своим расположением, всегда переопределите тот метод и возвратите Ваш пользовательский класс.Подклассы могут переопределить этот метод и использовать его для конфигурирования контекста аннулирования прежде, чем возвратить его. В Вашей пользовательской реализации вызвать
super
для получения объекта контекста аннулирования сконфигурируйте тот объект и возвратите его.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 8.0 и позже.
-
Подготавливает объект расположения к анимированным изменениям в границах представления или вставке или удалении элементов.
Объявление
Swift
func prepareForAnimatedBoundsChange(_
oldBounds
: CGRect)Objective C
- (void)prepareForAnimatedBoundsChange:(CGRect)
oldBounds
Параметры
oldBounds
Текущие границы представления набора.
Обсуждение
Представление набора вызывает этот метод прежде, чем выполнить любые анимированные изменения в границах представления или перед анимированной вставкой или удалением элементов. Этот метод является возможностью объекта расположения выполнить любые вычисления, должен был подготовиться к тем анимированным изменениям. В частности Вы могли бы использовать этот метод для вычисления начальных или заключительных позиций вставленных или удаленных элементов так, чтобы можно было возвратить те значения, когда спросили относительно них.
Можно также использовать этот метод для выполнения дополнительных анимаций. Любые анимации, которые Вы создаете, добавляются к блоку анимации, используемому для обработки вставок, удалений и изменений границ.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Очищает после любых анимированных изменений в границах представления или после вставки или удаления элементов.
Объявление
Swift
func finalizeAnimatedBoundsChange()
Objective C
- (void)finalizeAnimatedBoundsChange
Обсуждение
Представление набора вызывает этот метод после создания анимаций для изменения границ представления или после анимированной вставки или удаления элементов. Этот метод является возможностью объекта расположения сделать любую очистку, связанную с теми операциями.
Можно также использовать этот метод для выполнения дополнительных анимаций. Любые анимации, которые Вы создаете, добавляются к блоку анимации, используемому для обработки вставок, удалений и изменений границ.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Говорит объекту расположения подготовить быть установленным как расположение для представления набора.
Объявление
Swift
func prepareForTransitionFromLayout(_
oldLayout
: UICollectionViewLayout)Objective C
- (void)prepareForTransitionFromLayout:(UICollectionViewLayout *)
oldLayout
Параметры
oldLayout
Объект расположения, установленный в наборе, просматривает в начале перехода. Вы могли бы использовать этот объект обеспечить различные конечные атрибуты на основе стартового объекта расположения.
Обсуждение
До выполнения перехода расположения представление набора вызывает этот метод так, чтобы Ваш объект расположения мог выполнить любые начальные вычисления, должен был генерировать атрибуты макета.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Говорит, что расположение возражает, что собирается быть удаленным как расположение для представления набора.
Объявление
Swift
func prepareForTransitionToLayout(_
newLayout
: UICollectionViewLayout!)Objective C
- (void)prepareForTransitionToLayout:(UICollectionViewLayout *)
newLayout
Параметры
newLayout
Объект расположения, который будет установлен в наборе, просматривает в конце перехода. Вы могли бы использовать этот объект обеспечить различные стартовые атрибуты в зависимости от заключительного объекта расположения.
Обсуждение
До выполнения перехода расположения представление набора вызывает этот метод так, чтобы Ваш объект расположения мог выполнить любые начальные вычисления, должен был генерировать атрибуты макета.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Говорит объекту расположения выполнить любые последние шаги, прежде чем произойдут анимации перехода.
Объявление
Swift
func finalizeLayoutTransition()
Objective C
- (void)finalizeLayoutTransition
Обсуждение
Представление набора вызывает этот метод после того, как это заключило, что все атрибуты макета должны были выполнить переход от одного расположения до другого. Можно использовать этот метод для очистки любых структур данных или кэшей, создаваемых реализациями
prepareForTransitionFromLayout:
илиprepareForTransitionToLayout:
методы.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Регистрирует класс для использования в создании представлений художественного оформления для представления набора.
Объявление
Swift
func registerClass(_
viewClass
: AnyClass?, forDecorationViewOfKinddecorationViewKind
: String)Objective C
- (void)registerClass:(Class)
viewClass
forDecorationViewOfKind:(NSString *)decorationViewKind
Параметры
viewClass
Класс для использования для дополнительного представления.
decorationViewKind
Вид элемента представления художественного оформления. Можно использовать эту строку для различения представления художественного оформления с различными целями в расположении. Этот параметр не должен быть
nil
и не должна быть пустая строка.Обсуждение
Этот метод дает объекту расположения шанс зарегистрировать представление художественного оформления для использования в представлении набора. Представления художественного оформления обеспечивают визуальные украшения для раздела, или для всего набора просматривают, но иначе не связываются к данным, предоставленным источником данных представления набора.
Вы не должны создавать представления художественного оформления явно. После регистрации той это до объекта расположения решить, когда представление художественного оформления необходимо, и возвратите соответствующие атрибуты макета из
layoutAttributesForElementsInRect:
метод. Для атрибутов макета, указывающих представление художественного оформления, представление набора создает (или повторные использования) представление и выводит на экран его автоматически на основе зарегистрированной информации.При предыдущей регистрации класса или файла пера с той же доброй строкой, класс, Вы указываете в
viewClass
параметр заменяет старую запись. Можно указатьnil
дляviewClass
если Вы хотите не зарегистрировать представление художественного оформления.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.
-
Регистрирует файл пера для использования в создании представлений художественного оформления для представления набора.
Объявление
Параметры
nib
Объект пера, содержащий определение ячейки. Файл пера должен содержать только один объект верхнего уровня и что объект должен иметь тип
UICollectionReusableView
.decorationViewKind
Вид элемента представления художественного оформления. Можно использовать эту строку для различения представления художественного оформления с различными целями в расположении. Этот параметр не должен быть
nil
и не должна быть пустая строка.Обсуждение
Этот метод дает объекту расположения шанс зарегистрировать представление художественного оформления для использования в представлении набора. Представления художественного оформления обеспечивают визуальные украшения для раздела, или для всего набора просматривают, но иначе не связываются к данным, предоставленным источником данных представления набора.
Вы не должны создавать представления художественного оформления явно. После регистрации той это до объекта расположения решить, когда представление художественного оформления необходимо, и возвратите соответствующие атрибуты макета из
layoutAttributesForElementsInRect:
метод. Для атрибутов макета, указывающих представление художественного оформления, представление набора создает (или повторные использования) представление и выводит на экран его автоматически на основе зарегистрированной информации.При предыдущей регистрации класса или файла пера с той же доброй строкой, класс, Вы указываете в
viewClass
параметр заменяет старую запись. Можно указатьnil
дляviewClass
если Вы хотите не зарегистрировать представление художественного оформления.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 6.0 и позже.