Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions Sources/Classes/SwipeMenuView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ public struct SwipeMenuViewOptions {
/// AdditionView paddings. Defaults to `.zero`.
public var padding: UIEdgeInsets = .zero

/// AdditionView ratio is AdditionView / TabView. Defaults to `0.5`.
public var widthRatio: Double = 0.5

/// AdditionView backgroundColor. Defaults to `.black`.
public var backgroundColor: UIColor = .black

Expand Down Expand Up @@ -100,6 +103,9 @@ public struct SwipeMenuViewOptions {

/// Convert the text color of ItemView to selected text color by scroll rate of ContentScrollView. Defaults to `true`.
public var needsConvertTextColorRatio: Bool = true

/// TabView adjust width ratio or not. Defaults to `true`.
public var needsAdjustItemViewRaitoWidth: Bool = true

/// TabView enable safeAreaLayout. Defaults to `true`.
public var isSafeAreaEnabled: Bool = true
Expand Down Expand Up @@ -147,7 +153,7 @@ public struct SwipeMenuViewOptions {

// MARK: - SwipeMenuViewDelegate

public protocol SwipeMenuViewDelegate: class {
public protocol SwipeMenuViewDelegate: AnyObject {

/// Called before setup self.
func swipeMenuView(_ swipeMenuView: SwipeMenuView, viewWillSetupAt currentIndex: Int)
Expand All @@ -171,7 +177,7 @@ extension SwipeMenuViewDelegate {

// MARK: - SwipeMenuViewDataSource

public protocol SwipeMenuViewDataSource: class {
public protocol SwipeMenuViewDataSource: AnyObject {

/// Return the number of pages in `SwipeMenuView`.
func numberOfPages(in swipeMenuView: SwipeMenuView) -> Int
Expand Down
17 changes: 13 additions & 4 deletions Sources/Classes/TabView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import UIKit

// MARK: - TabViewDelegate

public protocol TabViewDelegate: class {
public protocol TabViewDelegate: AnyObject {

/// Called before selecting the tab.
func tabView(_ tabView: TabView, willSelectTabAt index: Int)
Expand All @@ -19,7 +19,7 @@ extension TabViewDelegate {

// MARK: - TabViewDataSource

public protocol TabViewDataSource: class {
public protocol TabViewDataSource: AnyObject {

/// Return the number of Items in `TabView`.
func numberOfItems(in tabView: TabView) -> Int
Expand Down Expand Up @@ -351,6 +351,11 @@ extension TabView {
switch options.addition {
case .underline:
let itemView = itemViews[currentIndex]
if options.needsAdjustItemViewRaitoWidth {
let padding = itemView.frame.width * (1 - options.additionView.widthRatio) / 2
options.additionView.padding.left = padding
options.additionView.padding.right = padding
}
additionView = UIView(frame: CGRect(x: itemView.frame.origin.x + options.additionView.padding.left, y: itemView.frame.height - options.additionView.padding.vertical, width: itemView.frame.width - options.additionView.padding.horizontal, height: options.additionView.underline.height))
additionView.backgroundColor = options.additionView.backgroundColor
containerView.addSubview(additionView)
Expand Down Expand Up @@ -402,10 +407,14 @@ extension TabView {
private func updateAdditionViewPosition(index: Int) {
guard let target = currentItem else { return }

additionView.frame.origin.x = target.frame.origin.x + options.additionView.padding.left

if options.needsAdjustItemViewWidth {
let cellWidth = itemViews[index].frame.width
if options.needsAdjustItemViewRaitoWidth {
let padding = cellWidth * (1 - options.additionView.widthRatio) / 2
options.additionView.padding.left = padding
options.additionView.padding.right = padding
}
additionView.frame.origin.x = target.frame.origin.x + options.additionView.padding.left
additionView.frame.size.width = cellWidth - options.additionView.padding.horizontal
}

Expand Down