forked from zelo72/mastodon-ios
chore: update profile header and segmented bar margin
This commit is contained in:
parent
78fc34c08d
commit
8e880326eb
|
@ -250,7 +250,7 @@ extension ProfileHeaderView {
|
|||
avatarImageViewBackgroundView.translatesAutoresizingMaskIntoConstraints = false
|
||||
addSubview(avatarImageViewBackgroundView)
|
||||
NSLayoutConstraint.activate([
|
||||
avatarImageViewBackgroundView.leadingAnchor.constraint(equalToSystemSpacingAfter: bannerContainerView.leadingAnchor, multiplier: 2.0),
|
||||
avatarImageViewBackgroundView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor),
|
||||
// align to dashboardContainer bottom
|
||||
])
|
||||
|
||||
|
@ -306,8 +306,8 @@ extension ProfileHeaderView {
|
|||
addSubview(container)
|
||||
NSLayoutConstraint.activate([
|
||||
container.topAnchor.constraint(equalTo: bannerContainerView.bottomAnchor),
|
||||
container.leadingAnchor.constraint(equalToSystemSpacingAfter: leadingAnchor, multiplier: 2.0),
|
||||
trailingAnchor.constraint(equalToSystemSpacingAfter: container.trailingAnchor, multiplier: 2.0),
|
||||
container.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor),
|
||||
layoutMarginsGuide.trailingAnchor.constraint(equalTo: container.trailingAnchor),
|
||||
container.bottomAnchor.constraint(equalTo: bottomAnchor),
|
||||
])
|
||||
|
||||
|
@ -401,10 +401,37 @@ extension ProfileHeaderView {
|
|||
relationshipActionButton.addTarget(self, action: #selector(ProfileHeaderView.relationshipActionButtonDidPressed(_:)), for: .touchUpInside)
|
||||
|
||||
configure(state: .normal)
|
||||
|
||||
updateLayoutMargins()
|
||||
}
|
||||
|
||||
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||
super.traitCollectionDidChange(previousTraitCollection)
|
||||
|
||||
updateLayoutMargins()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension ProfileHeaderView {
|
||||
private func updateLayoutMargins() {
|
||||
let margin: CGFloat = {
|
||||
switch traitCollection.userInterfaceIdiom {
|
||||
case .phone:
|
||||
return ProfileViewController.containerViewMarginForCompactHorizontalSizeClass
|
||||
default:
|
||||
return traitCollection.horizontalSizeClass == .regular ?
|
||||
ProfileViewController.containerViewMarginForRegularHorizontalSizeClass :
|
||||
ProfileViewController.containerViewMarginForCompactHorizontalSizeClass
|
||||
}
|
||||
}()
|
||||
|
||||
layoutMargins.left = margin
|
||||
layoutMargins.right = margin
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension ProfileHeaderView {
|
||||
enum State {
|
||||
case normal
|
||||
|
|
|
@ -22,6 +22,9 @@ protocol ProfileViewModelEditable {
|
|||
|
||||
final class ProfileViewController: UIViewController, NeedsDependency, MediaPreviewableViewController {
|
||||
|
||||
public static let containerViewMarginForRegularHorizontalSizeClass: CGFloat = 64
|
||||
public static let containerViewMarginForCompactHorizontalSizeClass: CGFloat = 16
|
||||
|
||||
let logger = Logger(subsystem: "ProfileViewController", category: "ViewController")
|
||||
|
||||
weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
|
||||
|
@ -279,13 +282,14 @@ extension ProfileViewController {
|
|||
self.profileHeaderViewController.view.addSubview(buttonBar)
|
||||
NSLayoutConstraint.activate([
|
||||
buttonBar.topAnchor.constraint(equalTo: self.profileHeaderViewController.profileHeaderView.bottomAnchor),
|
||||
buttonBar.leadingAnchor.constraint(equalToSystemSpacingAfter: self.profileHeaderViewController.view.leadingAnchor, multiplier: 2.0),
|
||||
buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.layoutMarginsGuide.trailingAnchor),
|
||||
buttonBar.leadingAnchor.constraint(equalTo: self.profileHeaderViewController.view.leadingAnchor),
|
||||
buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.trailingAnchor),
|
||||
buttonBar.bottomAnchor.constraint(equalTo: self.profileHeaderViewController.view.bottomAnchor),
|
||||
buttonBar.heightAnchor.constraint(equalToConstant: ProfileHeaderViewController.segmentedControlHeight).priority(.required - 1),
|
||||
])
|
||||
})
|
||||
)
|
||||
updateBarButtonInsets()
|
||||
|
||||
overlayScrollView.translatesAutoresizingMaskIntoConstraints = false
|
||||
view.addSubview(overlayScrollView)
|
||||
|
@ -389,6 +393,31 @@ extension ProfileViewController {
|
|||
currentPostTimelineTableViewContentSizeObservation = nil
|
||||
}
|
||||
|
||||
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||
super.traitCollectionDidChange(previousTraitCollection)
|
||||
|
||||
updateBarButtonInsets()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension ProfileViewController {
|
||||
private func updateBarButtonInsets() {
|
||||
let margin: CGFloat = {
|
||||
switch traitCollection.userInterfaceIdiom {
|
||||
case .phone:
|
||||
return ProfileViewController.containerViewMarginForCompactHorizontalSizeClass
|
||||
default:
|
||||
return traitCollection.horizontalSizeClass == .regular ?
|
||||
ProfileViewController.containerViewMarginForRegularHorizontalSizeClass :
|
||||
ProfileViewController.containerViewMarginForCompactHorizontalSizeClass
|
||||
}
|
||||
}()
|
||||
|
||||
profileHeaderViewController.buttonBar.layout.contentInset.left = margin
|
||||
profileHeaderViewController.buttonBar.layout.contentInset.right = margin
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension ProfileViewController {
|
||||
|
|
|
@ -30,8 +30,8 @@ extension AdaptiveContainerMarginTableViewCell {
|
|||
|
||||
public func updateContainerViewMarginConstraints() {
|
||||
func setupContainerForPhone() {
|
||||
containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // add inner margin for phone
|
||||
containerViewLeadingLayoutConstraint.constant = 0 // remove outer margin for phone
|
||||
containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // add inner margin for phone
|
||||
containerViewLeadingLayoutConstraint.constant = 0 // remove outer margin for phone
|
||||
containerViewTrailingLayoutConstraint.constant = 0
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ extension AdaptiveContainerMarginTableViewCell {
|
|||
setupContainerForPhone()
|
||||
return
|
||||
}
|
||||
containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: false) // remove margin for iPad
|
||||
containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: false) // remove margin for iPad
|
||||
containerViewLeadingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass // add outer margin for iPad
|
||||
containerViewTrailingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue