制作自定义分段控制器的替代方法
Alternative way to make custom segmented controller
从对象库中拖放分段控制器非常简单,但这并不总是必需的。我需要实现自定义下划线类型分段控制器,但我发现它非常困难。我在网上找到的代码就在我的脑海中。有人可以建议下划线类型自定义分段控制器的简单实现吗?
基本上你所做的是,
- 你创建一个UIView的子类,你可以通过xib手动设计,这样你就可以复用uiview了。
- 通过两个按钮让它看起来像一个分段控件
- 子类化 UIView 并编写代码以连接两个带有添加动画的按钮,其中一个将被取消选择(改变颜色),当另一个被选中时,反之亦然。
您看到的所有自定义分段控件都是这样完成的,添加了动画和自定义 drawRect
。而且代码更加模块化和 OOP,因此任何人都可以通过非常简单的方式轻松使用它 public api.
希望这个解释可以帮助您构建自己的自定义控件。
快乐编码
您可以使用 collection view
创建这样的东西。
参考:
在 UICollectionViewDelegateFlowLayout
中稍作改动后,您可以创建自己的自定义 segmented control
。
如果您按照这种方法需要任何帮助,请告诉我。
外行和最简单的方法可能是,在视图上放置两个标签。在每个标签下放置一个进度条。默认情况下隐藏进度条。为这些进度条和标签创建@IBOutlets。仔细分配约束。现在从对象库中拖出一个分段控制器并放在上面。将色调设置为 clear/transparent。现在为这个分段控制器创建出口。
现在,在选择分段控制器后,您可以将该分段下方的标签设为粗体,同时您可以取消隐藏所选分段的隐藏进度条。使用原始字体替换取消选中的标签。
希望你能理解提供和寻找细分的例子。
让我为它写代码,如果您遇到任何问题,请评论:
@IBAction func selection(_ sender: Any) {//outlet to UISegmentedControler
let sel = segmt.selectedSegmentIndex
if sel == 0 {
Providing.font = selectedFont //selected font is bold font
Seeking.font = fonts //original font for seeking
p.isHidden = false
s.isHidden = true
}
else if sel == 1 {
Seeking.font = selectedFont
Providing.font = fontp //original font for providing
s.isHidden = false
p.isHidden = true
}
else{
//code..
}
}
从对象库中拖放分段控制器非常简单,但这并不总是必需的。我需要实现自定义下划线类型分段控制器,但我发现它非常困难。我在网上找到的代码就在我的脑海中。有人可以建议下划线类型自定义分段控制器的简单实现吗?
基本上你所做的是,
- 你创建一个UIView的子类,你可以通过xib手动设计,这样你就可以复用uiview了。
- 通过两个按钮让它看起来像一个分段控件
- 子类化 UIView 并编写代码以连接两个带有添加动画的按钮,其中一个将被取消选择(改变颜色),当另一个被选中时,反之亦然。
您看到的所有自定义分段控件都是这样完成的,添加了动画和自定义 drawRect
。而且代码更加模块化和 OOP,因此任何人都可以通过非常简单的方式轻松使用它 public api.
希望这个解释可以帮助您构建自己的自定义控件。 快乐编码
您可以使用 collection view
创建这样的东西。
参考:
在 UICollectionViewDelegateFlowLayout
中稍作改动后,您可以创建自己的自定义 segmented control
。
如果您按照这种方法需要任何帮助,请告诉我。
外行和最简单的方法可能是,在视图上放置两个标签。在每个标签下放置一个进度条。默认情况下隐藏进度条。为这些进度条和标签创建@IBOutlets。仔细分配约束。现在从对象库中拖出一个分段控制器并放在上面。将色调设置为 clear/transparent。现在为这个分段控制器创建出口。
现在,在选择分段控制器后,您可以将该分段下方的标签设为粗体,同时您可以取消隐藏所选分段的隐藏进度条。使用原始字体替换取消选中的标签。
希望你能理解提供和寻找细分的例子。
让我为它写代码,如果您遇到任何问题,请评论:
@IBAction func selection(_ sender: Any) {//outlet to UISegmentedControler
let sel = segmt.selectedSegmentIndex
if sel == 0 {
Providing.font = selectedFont //selected font is bold font
Seeking.font = fonts //original font for seeking
p.isHidden = false
s.isHidden = true
}
else if sel == 1 {
Seeking.font = selectedFont
Providing.font = fontp //original font for providing
s.isHidden = false
p.isHidden = true
}
else{
//code..
}
}