mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
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
|
avatarImageViewBackgroundView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
addSubview(avatarImageViewBackgroundView)
|
addSubview(avatarImageViewBackgroundView)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
avatarImageViewBackgroundView.leadingAnchor.constraint(equalToSystemSpacingAfter: bannerContainerView.leadingAnchor, multiplier: 2.0),
|
avatarImageViewBackgroundView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor),
|
||||||
// align to dashboardContainer bottom
|
// align to dashboardContainer bottom
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -306,8 +306,8 @@ extension ProfileHeaderView {
|
|||||||
addSubview(container)
|
addSubview(container)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
container.topAnchor.constraint(equalTo: bannerContainerView.bottomAnchor),
|
container.topAnchor.constraint(equalTo: bannerContainerView.bottomAnchor),
|
||||||
container.leadingAnchor.constraint(equalToSystemSpacingAfter: leadingAnchor, multiplier: 2.0),
|
container.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor),
|
||||||
trailingAnchor.constraint(equalToSystemSpacingAfter: container.trailingAnchor, multiplier: 2.0),
|
layoutMarginsGuide.trailingAnchor.constraint(equalTo: container.trailingAnchor),
|
||||||
container.bottomAnchor.constraint(equalTo: bottomAnchor),
|
container.bottomAnchor.constraint(equalTo: bottomAnchor),
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -401,10 +401,37 @@ extension ProfileHeaderView {
|
|||||||
relationshipActionButton.addTarget(self, action: #selector(ProfileHeaderView.relationshipActionButtonDidPressed(_:)), for: .touchUpInside)
|
relationshipActionButton.addTarget(self, action: #selector(ProfileHeaderView.relationshipActionButtonDidPressed(_:)), for: .touchUpInside)
|
||||||
|
|
||||||
configure(state: .normal)
|
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 {
|
extension ProfileHeaderView {
|
||||||
enum State {
|
enum State {
|
||||||
case normal
|
case normal
|
||||||
|
@ -22,6 +22,9 @@ protocol ProfileViewModelEditable {
|
|||||||
|
|
||||||
final class ProfileViewController: UIViewController, NeedsDependency, MediaPreviewableViewController {
|
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")
|
let logger = Logger(subsystem: "ProfileViewController", category: "ViewController")
|
||||||
|
|
||||||
weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
|
weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
|
||||||
@ -279,13 +282,14 @@ extension ProfileViewController {
|
|||||||
self.profileHeaderViewController.view.addSubview(buttonBar)
|
self.profileHeaderViewController.view.addSubview(buttonBar)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
buttonBar.topAnchor.constraint(equalTo: self.profileHeaderViewController.profileHeaderView.bottomAnchor),
|
buttonBar.topAnchor.constraint(equalTo: self.profileHeaderViewController.profileHeaderView.bottomAnchor),
|
||||||
buttonBar.leadingAnchor.constraint(equalToSystemSpacingAfter: self.profileHeaderViewController.view.leadingAnchor, multiplier: 2.0),
|
buttonBar.leadingAnchor.constraint(equalTo: self.profileHeaderViewController.view.leadingAnchor),
|
||||||
buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.layoutMarginsGuide.trailingAnchor),
|
buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.trailingAnchor),
|
||||||
buttonBar.bottomAnchor.constraint(equalTo: self.profileHeaderViewController.view.bottomAnchor),
|
buttonBar.bottomAnchor.constraint(equalTo: self.profileHeaderViewController.view.bottomAnchor),
|
||||||
buttonBar.heightAnchor.constraint(equalToConstant: ProfileHeaderViewController.segmentedControlHeight).priority(.required - 1),
|
buttonBar.heightAnchor.constraint(equalToConstant: ProfileHeaderViewController.segmentedControlHeight).priority(.required - 1),
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
updateBarButtonInsets()
|
||||||
|
|
||||||
overlayScrollView.translatesAutoresizingMaskIntoConstraints = false
|
overlayScrollView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
view.addSubview(overlayScrollView)
|
view.addSubview(overlayScrollView)
|
||||||
@ -389,6 +393,31 @@ extension ProfileViewController {
|
|||||||
currentPostTimelineTableViewContentSizeObservation = nil
|
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 {
|
extension ProfileViewController {
|
||||||
|
@ -30,8 +30,8 @@ extension AdaptiveContainerMarginTableViewCell {
|
|||||||
|
|
||||||
public func updateContainerViewMarginConstraints() {
|
public func updateContainerViewMarginConstraints() {
|
||||||
func setupContainerForPhone() {
|
func setupContainerForPhone() {
|
||||||
containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // add inner margin for phone
|
containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // add inner margin for phone
|
||||||
containerViewLeadingLayoutConstraint.constant = 0 // remove outer margin for phone
|
containerViewLeadingLayoutConstraint.constant = 0 // remove outer margin for phone
|
||||||
containerViewTrailingLayoutConstraint.constant = 0
|
containerViewTrailingLayoutConstraint.constant = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ extension AdaptiveContainerMarginTableViewCell {
|
|||||||
setupContainerForPhone()
|
setupContainerForPhone()
|
||||||
return
|
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
|
containerViewLeadingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass // add outer margin for iPad
|
||||||
containerViewTrailingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass
|
containerViewTrailingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user