Merge branch 'mkirk/media-title-view'

pull/1/head
Michael Kirk 7 years ago
commit 36abd6ab73

@ -67,7 +67,7 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou
private let showAllMediaButton: Bool private let showAllMediaButton: Bool
private let sliderEnabled: Bool private let sliderEnabled: Bool
private let headerView: UIStackView private let headerView: UIView
init(initialItem: MediaGalleryItem, mediaGalleryDataSource: MediaGalleryDataSource, uiDatabaseConnection: YapDatabaseConnection, options: MediaGalleryOption) { init(initialItem: MediaGalleryItem, mediaGalleryDataSource: MediaGalleryDataSource, uiDatabaseConnection: YapDatabaseConnection, options: MediaGalleryOption) {
assert(uiDatabaseConnection.isInLongLivedReadTransaction()) assert(uiDatabaseConnection.isInLongLivedReadTransaction())
@ -78,20 +78,29 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou
let kSpacingBetweenItems: CGFloat = 20 let kSpacingBetweenItems: CGFloat = 20
let headerView = UIStackView() self.headerView = UIView()
self.headerView = headerView headerView.layoutMargins = UIEdgeInsets(top: 2, left: 8, bottom: 4, right: 8)
super.init(transitionStyle: .scroll, super.init(transitionStyle: .scroll,
navigationOrientation: .horizontal, navigationOrientation: .horizontal,
options: [UIPageViewControllerOptionInterPageSpacingKey: kSpacingBetweenItems]) options: [UIPageViewControllerOptionInterPageSpacingKey: kSpacingBetweenItems])
// needed for proper layout on iOS9/10 let headerStackView = UIStackView()
headerView.translatesAutoresizingMaskIntoConstraints = false headerView.addSubview(headerStackView)
headerView.axis = .vertical headerStackView.axis = .vertical
headerView.alignment = .center headerStackView.alignment = .center
headerView.addArrangedSubview(headerNameLabel) headerStackView.spacing = 0
headerView.addArrangedSubview(headerDateLabel) headerStackView.distribution = .fillProportionally
headerStackView.addArrangedSubview(headerNameLabel)
headerStackView.addArrangedSubview(headerDateLabel)
headerStackView.autoPinEdge(toSuperviewMargin: .top, relation: .greaterThanOrEqual)
headerStackView.autoPinEdge(toSuperviewMargin: .right, relation: .greaterThanOrEqual)
headerStackView.autoPinEdge(toSuperviewMargin: .bottom, relation: .greaterThanOrEqual)
headerStackView.autoPinEdge(toSuperviewMargin: .left, relation: .greaterThanOrEqual)
headerStackView.setContentHuggingHigh()
headerStackView.autoCenterInSuperview()
self.dataSource = self self.dataSource = self
self.delegate = self self.delegate = self
@ -589,6 +598,7 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou
label.font = UIFont.ows_regularFont(withSize: 12) label.font = UIFont.ows_regularFont(withSize: 12)
label.textAlignment = .center label.textAlignment = .center
label.adjustsFontSizeToFitWidth = true label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.8
return label return label
}() }()
@ -609,5 +619,19 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou
let date = Date(timeIntervalSince1970: Double(item.message.timestamp) / 1000) let date = Date(timeIntervalSince1970: Double(item.message.timestamp) / 1000)
let formattedDate = dateFormatter.string(from: date) let formattedDate = dateFormatter.string(from: date)
headerDateLabel.text = formattedDate headerDateLabel.text = formattedDate
if #available(iOS 11, *) {
// Do nothing, on iOS11, autolayout grows the stack view as necessary.
} else {
// Size the titleView to be large enough to fit the widest label,
// but no larger. If we go for a "full width" label, our title view
// will not be centered (since the left and right bar buttons have different widths)
headerNameLabel.sizeToFit()
headerDateLabel.sizeToFit()
let maxWidth = max(headerNameLabel.frame.width, headerDateLabel.frame.width)
let headerFrame: CGRect = CGRect(x: 0, y: 0, width: maxWidth, height: 44)
headerView.frame = headerFrame
}
} }
} }

Loading…
Cancel
Save