Skip to content

Commit

Permalink
fix the bug that not work as a viewController's childViewController.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jiar committed Jan 22, 2019
1 parent 42432a4 commit b5ca316
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 31 deletions.
22 changes: 19 additions & 3 deletions Source/General/SegementSlideViewController+setup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,11 @@ extension SegementSlideViewController {

internal func layoutSegementSlideScrollView() {
segementSlideHeaderView.snp.remakeConstraints { make in
headerViewTopConstraint = make.top.equalTo(segementSlideScrollView.snp.top).constraint
if edgesForExtendedLayout.contains(.top) {
make.top.equalTo(segementSlideScrollView.snp.top).offset(0)
} else {
make.top.equalTo(segementSlideScrollView.snp.top).offset(topLayoutLength)
}
make.leading.equalTo(view.snp.leading)
make.trailing.equalTo(view.snp.trailing)
if let _ = innerHeaderView, let innerHeaderHeight = innerHeaderHeight {
Expand All @@ -104,7 +108,11 @@ extension SegementSlideViewController {
if let _ = innerHeaderView {
make.top.equalTo(segementSlideHeaderView.snp.bottom).priority(999)
} else {
headerViewTopConstraint = make.top.equalTo(segementSlideScrollView.snp.top).priority(999).constraint
if edgesForExtendedLayout.contains(.top) {
make.top.equalTo(segementSlideScrollView.snp.top).offset(0).priority(999)
} else {
make.top.equalTo(segementSlideScrollView.snp.top).offset(topLayoutLength).priority(999)
}
}
if #available(iOS 11, *) {
make.top.greaterThanOrEqualTo(view.safeAreaLayoutGuide.snp.top)
Expand All @@ -119,7 +127,15 @@ extension SegementSlideViewController {
make.top.equalTo(segementSlideSwitcherView.snp.bottom)
make.leading.equalTo(view.snp.leading)
make.trailing.equalTo(view.snp.trailing)
contentViewHeightConstraint = make.height.equalTo(contentViewHeight).constraint
make.height.equalTo(contentViewHeight)
}
segementSlideHeaderView.layer.zPosition = -3
segementSlideContentView.layer.zPosition = -2
segementSlideSwitcherView.layer.zPosition = -1
if edgesForExtendedLayout.contains(.top) {
segementSlideScrollView.contentSize = CGSize(width: view.bounds.width, height: (innerHeaderHeight ?? 0)+switcherHeight+contentViewHeight+1)
} else {
segementSlideScrollView.contentSize = CGSize(width: view.bounds.width, height: topLayoutLength+(innerHeaderHeight ?? 0)+switcherHeight+contentViewHeight+1)
}
}

Expand Down
14 changes: 0 additions & 14 deletions Source/General/SegementSlideViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ open class SegementSlideViewController: UIViewController {
internal var innerHeaderHeight: CGFloat?
internal var innerHeaderView: UIView?

internal var headerViewTopConstraint: Constraint?
internal var contentViewHeightConstraint: Constraint?
internal var parentKeyValueObservation: NSKeyValueObservation!
internal var childKeyValueObservation: NSKeyValueObservation?
internal var innerBouncesType: BouncesType = .parent
Expand Down Expand Up @@ -125,17 +123,6 @@ open class SegementSlideViewController: UIViewController {
open override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
layoutSegementSlideScrollView()
segementSlideHeaderView.layer.zPosition = -3
segementSlideContentView.layer.zPosition = -2
segementSlideSwitcherView.layer.zPosition = -1
contentViewHeightConstraint?.update(offset: contentViewHeight)
if edgesForExtendedLayout.contains(.top) {
headerViewTopConstraint?.update(offset: 0)
segementSlideScrollView.contentSize = CGSize(width: view.bounds.width, height: (innerHeaderHeight ?? 0)+switcherHeight+contentViewHeight+1)
} else {
headerViewTopConstraint?.update(offset: topLayoutLength)
segementSlideScrollView.contentSize = CGSize(width: view.bounds.width, height: topLayoutLength+(innerHeaderHeight ?? 0)+switcherHeight+contentViewHeight+1)
}
}

open override func viewDidLoad() {
Expand Down Expand Up @@ -197,4 +184,3 @@ open class SegementSlideViewController: UIViewController {
}

}

19 changes: 5 additions & 14 deletions Source/General/TransparentSlideViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,11 @@ open class TransparentSlideViewController: SegementSlideViewController {
public typealias DisplayEmbed<T> = (display: T, embed: T)

private weak var parentScrollView: UIScrollView? = nil
private var titleLabel: UILabel!
private var addedShadow: Bool = false
private var hasEmbed: Bool = false
private var hasDisplay: Bool = false

private let titleLabel = UILabel()

public weak var storedNavigationController: UINavigationController? = nil
public var storedNavigationBarIsTranslucent: Bool? = nil
public var storedNavigationBarBarStyle: UIBarStyle? = nil
Expand Down Expand Up @@ -71,17 +70,14 @@ open class TransparentSlideViewController: SegementSlideViewController {
return (.white, .black)
}

public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
setupTitleLabel()
}

public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
open override func viewDidLoad() {
super.viewDidLoad()
setupTitleLabel()
edgesForExtendedLayout = .top
}

private func setupTitleLabel() {
titleLabel = UILabel()
let titleSize = CGSize(width: view.bounds.width-112, height: 44)
if #available(iOS 11, *) {
titleLabel.snp.makeConstraints { make in
Expand All @@ -94,11 +90,6 @@ open class TransparentSlideViewController: SegementSlideViewController {
navigationItem.titleView = titleLabel
}

open override func viewDidLoad() {
super.viewDidLoad()
edgesForExtendedLayout = .top
}

public override func reloadData() {
super.reloadData()
reloadNavigationBarStyle()
Expand Down

0 comments on commit b5ca316

Please sign in to comment.