YUSegment 1.0.1

YUSegment 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2017年4月

afishhhhh 维护。



YUSegment 1.0.1

  • 作者
  • afishhhhh

中文文档

为 iOS 定制的分段控件。

YUSegment-demo

特性

  • 支持(属性)文本和图片
  • 有两种样式(线性矩形)可供选择
  • 支持水平滚动
  • 支持自定义字体和颜色
  • YUSegment 支持 iOS 8.0+ 并与 ARC 项目兼容

使用方法

以编程方式创建 YUSegment(推荐)

NSArray *titles = @[@"Left", @"Medium", @"Right"];
YUSegment *segment = [[YUSegment alloc] initWithTitles:titles];
[self.view addSubview:segment];
segment.frame = (CGRect){20, 60, [UIScreen mainScreen].bounds.size.width - 40, 44};

使用 Storyboard 创建 YUSegment

  1. 在对象库中,选择 "UIView" 对象,并拖动到视图中。
  2. 更改视图的位置和大小。

    YUSegment-storyboard

  3. 在标识检查器中,将类更改为 "YUSegment"。然后连接出口。

    YUSegment-storyboard

    @property (weak, nonatomic) IBOutlet YUSegment *segment;
  4. 可以在属性检查器中修改一些属性。

    YUSegment-storyboard

更多详情请查看 YUSegmentDemo

API

目标-动作

与 UISegmentedControl 类似,您只需要以下代码

[segment addTarget:self action:@selector(someMethod) forControlEvents:UIControlEventValueChanged];

图片

默认情况下,图片相同,无论选中哪个。如果您想在特定段选中时显示不同的图片,应调用 -replaceDeselectedImagesWithImages:-replaceDeselectedImageWithImage:atIndex:

属性文本

请使用 -setTitleTextAttributes:forState: 来设置属性字符串。例如

NSDictionary *attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:20]};
[segment setTitleTextAttributes:attributes forState:YUSegmentedControlStateNormal];

图层

您可以在属性检查器中设置 borderColorborderWidthcornerRadius。如果您不使用界面构建器,代码应类似于以下:

segment.layer.borderWidth = someValue;
segment.layer.borderColor = someValue;

注意:您应使用 cornerRadius 而不是 layer.cornerRadius。因为如果您为分段控件设置了 cornerRaduis,则指示器将自动变为圆形。 注意:关于 cornerRadius。分段控件及其指示器都有默认的 cornerRadius 值。默认值等于分段控件高度的一半。在版本 0.2.0 中,如果不设置分段控件的 cornerRaduis,指示器不会自动变为圆形。您还需要手动为指示器设置 cornerRadius

启用滚动

YUSegment 没有类似于 scrollEnabled 的属性,您只需要设置每个分段的宽度(segmentWidth)。此属性将使分段控件水平滚动。

新功能

版本 0.1.4
  • 支持链式语法。您可以为分段控件设置 borderWidthborderColor,使其看起来像:
sgement.borderWidth(1.0).borderColor([UIColor redColor]);
版本 0.2.0
  • 公开属性 indicator(只读),您可以为指示器设置属性,例如 backgroundColorborderWidthborderColor 等。
segment.indicator.backgroundColor = [UIColor redColor];
segment.indicator.layer.borderWidth = 1.0;
segment.indicator.layer.borderColor = [UIColor redColor].CGColor;
  • 支持链式语法。您可以为指示器设置 borderWidthborderColor,使其看起来像:
segment.indicator.borderWidth(1.0).borderColor([UIColor redColor]);

许可

该代码根据 MIT 许可协议的条款和条件分发。