added comments for SelfSizingCollectionView
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
814a048690
commit
8fd56aa99b
@ -9,12 +9,19 @@ import Foundation
|
|||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
@objc(VDSSelfSizingCollectionView)
|
@objc(VDSSelfSizingCollectionView)
|
||||||
|
/// UICollectionView subclassed used to deal with Changing the size of itself based on its children and layout and changes of its contentSize
|
||||||
public final class SelfSizingCollectionView: UICollectionView {
|
public final class SelfSizingCollectionView: UICollectionView {
|
||||||
|
|
||||||
private var contentSizeObservation: NSKeyValueObservation?
|
private var contentSizeObservation: NSKeyValueObservation?
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
// MARK: - Lifecycle
|
// MARK: - Lifecycle
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
/// Initializer
|
||||||
|
/// - Parameters:
|
||||||
|
/// - frame: Frame needed
|
||||||
|
/// - layout: Layout used for this CollectionView
|
||||||
public override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) {
|
public override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) {
|
||||||
super.init(frame: frame, collectionViewLayout: layout)
|
super.init(frame: frame, collectionViewLayout: layout)
|
||||||
self.setupContentSizeObservation()
|
self.setupContentSizeObservation()
|
||||||
@ -25,14 +32,18 @@ public final class SelfSizingCollectionView: UICollectionView {
|
|||||||
self.setupContentSizeObservation()
|
self.setupContentSizeObservation()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
// MARK: - UIView
|
// MARK: - UIView
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
public override var intrinsicContentSize: CGSize {
|
public override var intrinsicContentSize: CGSize {
|
||||||
let contentSize = self.contentSize
|
let contentSize = self.contentSize
|
||||||
//print(#function, contentSize)
|
//print(#function, contentSize)
|
||||||
return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
|
return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Overridden to deal with Appearance Changes
|
||||||
public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||||
//print(type(of: self), #function)
|
//print(type(of: self), #function)
|
||||||
super.traitCollectionDidChange(previousTraitCollection)
|
super.traitCollectionDidChange(previousTraitCollection)
|
||||||
@ -43,13 +54,9 @@ public final class SelfSizingCollectionView: UICollectionView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
|
//--------------------------------------------------
|
||||||
let size = super.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: horizontalFittingPriority, verticalFittingPriority: verticalFittingPriority)
|
|
||||||
//print(type(of: self), #function, targetSize, "->", size)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
private func setupContentSizeObservation() {
|
private func setupContentSizeObservation() {
|
||||||
// Observing the value of contentSize seems to be the only reliable way to get the contentSize after the collection view lays out its subviews.
|
// Observing the value of contentSize seems to be the only reliable way to get the contentSize after the collection view lays out its subviews.
|
||||||
@ -63,7 +70,10 @@ public final class SelfSizingCollectionView: UICollectionView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extension UITraitCollection {
|
extension UITraitCollection {
|
||||||
|
|
||||||
|
/// Used within SelfSizingCollectionView to determine if there is an appearance change
|
||||||
|
/// - Parameter traitCollection: TraitCollection to compare
|
||||||
|
/// - Returns: True/False based on the trailCollection passed in
|
||||||
public func hasDifferentTextAppearance(comparedTo traitCollection: UITraitCollection?) -> Bool {
|
public func hasDifferentTextAppearance(comparedTo traitCollection: UITraitCollection?) -> Bool {
|
||||||
var result = self.preferredContentSizeCategory != traitCollection?.preferredContentSizeCategory
|
var result = self.preferredContentSizeCategory != traitCollection?.preferredContentSizeCategory
|
||||||
result = result || self.legibilityWeight != traitCollection?.legibilityWeight
|
result = result || self.legibilityWeight != traitCollection?.legibilityWeight
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user