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() -> CGSizeObjective C
- (CGSize)collectionViewContentSizeВозвращаемое значение
Ширина и высота содержания представления набора.
Обсуждение
Подклассы должны переопределить этот метод и использовать его для возврата ширины и высоты содержания представления набора. Эти значения представляют ширину и высоту всего содержания, не только содержания, которое в настоящее время видимо. Представление набора использует эту информацию для конфигурирования ее собственного размера содержания для прокрутки целей.
Реализация по умолчанию этого метода возвраты
CGSizeZero.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 6.0 и позже.
-
Возвращает класс для использования при создании объектов атрибутов макета.
Объявление
Swift
class func layoutAttributesClass() -> AnyClassObjective 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 *)kindatIndexPath:(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 *)decorationViewKindatIndexPath:(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 *)elementKindatIndexPath:(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 *)elementKindatIndexPath:(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 *)elementKindatIndexPath:(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 *)elementKindatIndexPath:(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() -> AnyClassObjective 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Новые границы представления набора.
Возвращаемое значение
YEStrueесли представление набора требует обновления расположения илиNOfalseесли не должно изменяться расположение.Обсуждение
Реализация по умолчанию этого метода возвраты
NOfalse. Подклассы могут переопределить его и возвратить надлежащее значение на основе того, требуют ли изменения в границах представления набора изменений в расположении ячеек и дополнительных представлениях.Если границы набора просматривают изменение и этот метод возвраты
YEStrue, представление набора лишает законной силы расположение путем вызова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 *)preferredAttributeswithOriginalAttributes:(UICollectionViewLayoutAttributes *)originalAttributesПараметры
preferredAttributesАтрибуты макета, возвращенные ячейкой
preferredLayoutAttributesFittingAttributes:метод.originalAttributesАтрибуты, которым расположение возражает первоначально предложенный для ячейки.
Возвращаемое значение
YEStrueесли расположение должно быть лишено законной силы илиNOfalseесли это не должно.Обсуждение
Когда представление набора включает ячейки самокалибровки, ячейкам дают возможность изменить их собственные атрибуты макета, прежде чем будут применены те атрибуты. Ячейка самокалибровки могла бы сделать это для указания различного размера ячейки, чем тот, который обеспечивает объект расположения. Когда ячейка обеспечивает различный набор атрибутов, представление набора вызывает этот метод, чтобы определить, требует ли изменение ячейки большего обновления расположения.
При реализации пользовательского макета можно переопределить этот метод и использовать его, чтобы определить, должно ли расположение быть лишено законной силы на основе указанных атрибутов. Реализация по умолчанию этого метода возвраты
NOfalse.Оператор импорта
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 *)preferredAttributeswithOriginalAttributes:(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)viewClassforDecorationViewOfKind:(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 и позже.
