128 lines
5.4 KiB
Swift
128 lines
5.4 KiB
Swift
//
|
||
// JYPageConfig.swift
|
||
// JYPageController
|
||
//
|
||
// Created by wang tao on 2022/7/14.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
|
||
@objc enum JYSegmentedItemState: Int {
|
||
case normal = 0
|
||
case selected = 1
|
||
}
|
||
|
||
@objc public enum JYSegmentedViewAlignment: Int {
|
||
case left
|
||
case right
|
||
case center
|
||
}
|
||
|
||
///IndicatorStyle
|
||
@objc public enum JYSegmentedViewIndicatorStyle: Int {
|
||
case none //不显示指示器. indicator hidden
|
||
case singleLine //指示器下划线宽度等于标题的文字宽度. default: lineWidth = title width
|
||
case customView //自定义view做指示器,需要设置customIndicator属性. custom view,need set customIndicator property
|
||
}
|
||
|
||
///refresh location
|
||
@objc public enum JYHeaderRefreshLocation: Int {
|
||
case headerViewTop //下拉刷新位置在headerView顶部. refresh headerView at headerView top
|
||
case childControllerViewTop //下拉刷新位置在子页面的scrollView顶部. refresh headerView at childControllerViewtop
|
||
}
|
||
|
||
|
||
|
||
public class JYPageConfig: NSObject {
|
||
|
||
public var itemBackgroundColor: UIColor?
|
||
public var itemBackgroundHeight: CGFloat = 0
|
||
public var itemBackgroundCornerRadius: CGFloat = 0
|
||
|
||
public var textMargin: CGFloat = 0.0
|
||
|
||
public var pageScrollBounces = false
|
||
|
||
///悬停偏移
|
||
public var hoverOffset: CGFloat = 0.0
|
||
|
||
///非选中状态segmentItem标题颜色. normal status title color, default black
|
||
public var normalTitleColor: UIColor = .black
|
||
|
||
///非选中状态segmentItem标题大小. normal status title font, default size:16
|
||
public var normalTitleFont: CGFloat = 16
|
||
|
||
///非选中状态segmentItem标题字重. normal status fontWeight, default regular
|
||
public var normalTitleFontWeight: UIFont.Weight = .regular
|
||
|
||
///选中状态segmentItem标题颜色. selected status title color, default black
|
||
public var selectedTitleColor: UIColor = .black
|
||
|
||
///选中状态segmentItem标题大小. selected status title fontsize, default size:16
|
||
public var selectedTitleFont: CGFloat = 16
|
||
|
||
///选中状态segmentItem标题字重. selected status title fontWeight, default regular
|
||
public var selectedTitleFontWeight: UIFont.Weight = .regular
|
||
|
||
///segmentedView指示器样式,默认是和标题等款的下划线. indicator style, default singleLine
|
||
public var indicatorStyle: JYSegmentedViewIndicatorStyle = .singleLine
|
||
|
||
///segmentedView自定义view指示器. custom indicatorView, if indicatorStyle = .customView, set this property
|
||
public var customIndicator: UIView?
|
||
|
||
///segmentedView指示器宽度. indicator width
|
||
public var indicatorWidth: CGFloat = 0
|
||
|
||
///segmentedView指示器高度. indicator height
|
||
public var indicatorHeight: CGFloat = 2
|
||
|
||
///segmentedView指示器距离segmentedView底部间距. indicator bottom distance from menuview bottom,default 0
|
||
public var indicatorBottom: CGFloat = 0
|
||
|
||
///segmentedView指示器颜色. indicator color, if indicatorStyle =.customSizeLine || indicatorStyle =.followItemSizeLine, you can set this property
|
||
public var indicatorColor: UIColor = .red
|
||
|
||
///segmentedView指示器圆角. indicator cornerRadius, default 0
|
||
public var indicatorCornerRadius: CGFloat = 0
|
||
|
||
///指示器底部的下划线粘性动画,默认false. indicator need sticky animation? default false
|
||
public var indicatorStickyAnimation: Bool = false
|
||
|
||
///segmentedView item之间间距. item margin
|
||
public var itemsMargin: CGFloat = 15
|
||
|
||
///segmentedView item最小宽度. item min width, if text width < minwidth, item width = menuItemMinWidth
|
||
public var itemMinWidth: CGFloat = 0
|
||
|
||
///segmentedView item最大宽度. item max width, if text width > maxwidth, item width = menuItemMaxWidth
|
||
public var itemMaxWidth: CGFloat = 0
|
||
|
||
///segmentedView item距离segmentedView顶部的距离,默认垂直方向居中. item top distance from meuuview top, default ver center
|
||
public var itemTop: CGFloat?
|
||
|
||
///segmentedView aligment默认left. default .left
|
||
public var alignment: JYSegmentedViewAlignment = .left
|
||
|
||
///segmentedView左边距,默认0. segmentedView leftPadding
|
||
public var leftPadding: CGFloat = 0
|
||
|
||
///segmentedView右边距,默认0. segmentedView rightPadding
|
||
public var rightPadding: CGFloat = 0
|
||
|
||
///segmentedView item的角标位置X,Y方向调整
|
||
///badgeViewOffSet,default badgeView.left = item.right, badgeView.centerY = item.top After you set badgeViewOffset, badgeView.left = item.right+offet.x, badgeView.centerY = item.top + offsetY
|
||
public var badgeViewOffset: CGPoint = .zero
|
||
|
||
///点击segmentedView的item时候下面的子页面切换是否需要滚动动画,默认false. when the menuItem is clicked,scrollView change to target page. need animation?
|
||
public var scrollViewAnimationWhenSegmentItemSelected: Bool = false
|
||
|
||
///segmentedView是否显示在导航栏. segmentedView show in navigation bar, default false
|
||
public var segmentedViewShowInNavigationBar: Bool = false
|
||
|
||
///有headerView的时候下拉刷新位置在子页面的顶部,还是在headerView的顶部,默认在headerView的顶部. when pageController has headerView, header refresh location. defalut: at headerView top
|
||
public var headerRefreshLocation: JYHeaderRefreshLocation = .headerViewTop
|
||
|
||
}
|
||
|