2025-04-09 18:24:58 +08:00

128 lines
5.4 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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 viewneed 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
///segmentedViewview. 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
///segmentedViewsegmentedView. indicator bottom distance from menuview bottomdefault 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 itemsegmentedView. item top distance from meuuview top, default ver center
public var itemTop: CGFloat?
///segmentedView aligmentleft. 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 itemX,Y
///badgeViewOffSetdefault 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
///segmentedViewitemfalse. when the menuItem is clickedscrollView change to target page. need animation?
public var scrollViewAnimationWhenSegmentItemSelected: Bool = false
///segmentedView. segmentedView show in navigation bar, default false
public var segmentedViewShowInNavigationBar: Bool = false
///headerViewheaderView,headerView. when pageController has headerView, header refresh location. defalut: at headerView top
public var headerRefreshLocation: JYHeaderRefreshLocation = .headerViewTop
}