//
//  WYSegmentView.h
//  GengMei
//
//  Created by wangyang on 13-8-9.
//  Copyright (c) 2015 Gengmei. All rights reserved.
//

#import "GMView.h"

typedef NS_ENUM(NSUInteger, WYSegmentViewWidthStyle) {
    WYSegmentViewWidthStyleFixed,   // Segment width is fixed
    WYSegmentViewWidthStyleDynamic, // Segment width will only be as big as the text width (including inset)
    WYSegmentViewWidthStyleEqual   // Segment width is equal
};

typedef NS_ENUM(NSUInteger, GMSegmentBtnStyle) {
    GMSegmentBtnStyleCommon = 0, // 普通的文字
    GMSegmentBtnStyleLive = 1,   // live 图片
};
@interface WYSegmentView : GMView

/**
 *	数组的内容是要显示的 button title,设置该属性后,button 将会被自动添加,详见其 set 方法
 */
@property (nonatomic, strong) NSArray *sectionTitles;

/**
 如果含有非文字类型的btn,则在该数组中对应的index 传入相关的类型和图片url,如果全是文字类型的,可不使用该字段
 eg:[{'btnStyle':'GMSegmentBtnStylexxx','tabNameImage':'tab图片','iconUrl':'live动图'}]
 */
@property (nonatomic, strong) NSArray *sectionTitlesInfor;

@property (nonatomic, readonly) NSInteger selectedSegmentIndex;

@property (nonatomic, copy) void (^didSelectedBlock)(NSUInteger index);

- (void)layoutSegments;
- (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex animated:(BOOL)animated;
#pragma mark - 自定义UI

// 没有使用 GMScrollView是想把这个 segment view做得更独立一些
@property (nonatomic, readonly) UIScrollView *scrollView;
@property (nonatomic, readonly) UIView *bottomLine;

/**
 *  @author wangyang, 16-02-17 15:02:53
 *
 *  @brief 默认是Dynamic
 *  @since 1.0
 */
@property (nonatomic, assign) WYSegmentViewWidthStyle widthStyle;

/**
 在WYSegmentViewWidthStyleFixed模式下,默认两边有23的间距。
 */
@property (nonatomic, assign) CGFloat bothEndPadding;

/**
 *  @author wangyang, 16-02-16 10:02:51
 *
 *  @brief button在计算宽度时会将这个这个padding算在内,左右各加一个 itemHorizonalPadding,即buttonWidth = buttonTitleWidth + 2 * itemHorizonalPadding
 *  @since 1.0
 */
@property (nonatomic, assign) CGFloat itemHorizonalPadding;

@property (nonatomic, strong) NSDictionary *titleTextAttributes;
@property (nonatomic, strong) NSDictionary *selectedTitleTextAttributes;

/**
 *  @author wangyang, 16-02-17 11:02:24
 *
 *  @brief 实现这个block,以便继续自定义button的UI。比如添加背景色,边框等
 *  @since 1.0
 */
@property (nonatomic, copy) void (^customButtonUI) (UIButton *button, NSInteger index);

/**
 *  @author wangyang, 16-02-15 18:02:19
 *
 *  @brief 是否显示指示器。默认为NO
 *  @since 1.0
 */
@property (nonatomic, assign) BOOL showIndicator;
@property (nonatomic, strong) UIColor *indicatorColor;

/**
 *  @author wangyang, 16-02-17 16:02:38
 *
 *  @brief 默认为0,此时indicator.width与button的标题一样长。
 *  @since 1.0
 */
@property (nonatomic, assign) CGFloat indicatorHorizonalPadding;
/**
 *  @author wangyang, 16-02-17 15:02:17
 *
 *  @brief 当点击某个tab时,会调用该闭包,以正确设置的indicator动画。设置indicator.frame就可以
 *  @param indicator 指示符
 *  @param button    待指示的button
 *  @since 1.0
 */
@property (nonatomic, copy) void (^updateIndicatorFrame) (UIView *indicator, UIButton *button);

@end