【问题标题】:Alternative way to make custom segmented controller制作自定义分段控制器的替代方法
【发布时间】:2017-05-29 20:23:54
【问题描述】:

从对象库中拖放分段控制器非常简单,但这并不总是必需的。我需要实现自定义下划线类型的分段控制器,但我发现它太难了。我在网上找到的代码就在我头上。有人可以建议轻松实现下划线类型的自定义分段控制器吗?

【问题讨论】:

  • 喜欢的东西...?

标签: ios swift uisegmentedcontrol


【解决方案1】:

外行,最简单的方法可能是,您在视图上放置两个标签。并在每个标签下放置一个进度条。默认情况下隐藏进度条。为这些进度条和标签创建@IBOutlets。仔细分配约束。现在从对象库中拖动一个分段控制器并将其放置在这些控制器上。使色调清晰/透明。现在为这个分段控制器创建插座。

现在,在选择分段控制器后,您可以使该分段下方的标签变为粗体,同时您可以取消隐藏所选分段的隐藏进度条。用原始字体替换取消未选中的标签。

希望您通过提供和寻求细分的示例来理解。

让我为它编写代码,如果您遇到任何问题,请发表评论:

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

    }

【讨论】:

    【解决方案2】:

    基本上你所做的是,

    • 你创建了一个UIView的子类,你可以通过xib手动设计,这样你就可以复用uiview了。
    • 通过两个按钮使其看起来像一个分段控件
    • 子类 UIView 并编写代码来连接两个按钮并添加动画,其中一个将被取消选择(更改颜色),当另一个被选中时,反之亦然。

    您看到的所有自定义分段控件都是这样完成的,添加了动画和自定义drawRect。而且代码更加模块化和面向对象编程,因此任何人都可以通过非常简单的公共 api 轻松使用它。

    希望这个解释可以帮助您构建自己的自定义控件。 快乐编码

    【讨论】:

      【解决方案3】:

      您可以使用collection view 创建类似的内容。

      参考:https://stackoverflow.com/a/40552321/5716829

      在对UICollectionViewDelegateFlowLayout 进行细微更改后,您可以创建自己的自定义segmented control

      如果您在遵循此方法时需要任何帮助,请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 2013-06-02
        • 1970-01-01
        相关资源
        最近更新 更多