制作自定义分段控制器的替代方法

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..
        }

    }