当前位置: 首页 > 面试题库 >

如何从分段控件中删除边框

乌修筠
2023-03-14
问题内容

如何删除分段控件的外边界?我已将分隔图像设置为所需的图像,但现在要遵循我的应用程序模拟,我需要具有无外部边界的分段控件。


问题答案:

您必须了解的是该backgroundColor属性不是有状态的。因此,您必须使用setBackgroundImage(_:for:barMetrics:)

使用以下功能,我们可以轻松删除边框和分隔线。

对于Swift 3和4+:

extension UISegmentedControl {
    func removeBorders() {
        setBackgroundImage(imageWithColor(color: backgroundColor ?? .clear), for: .normal, barMetrics: .default)
        setBackgroundImage(imageWithColor(color: tintColor!), for: .selected, barMetrics: .default)
        setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
    }

    // create a 1x1 image with this color
    private func imageWithColor(color: UIColor) -> UIImage {
        let rect = CGRect(x: 0.0, y: 0.0, width:  1.0, height: 1.0)
        UIGraphicsBeginImageContext(rect.size)
        let context = UIGraphicsGetCurrentContext()
        context!.setFillColor(color.cgColor);
        context!.fill(rect);
        let image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return image!
    }
}

对于Swift 2.2:

extension UISegmentedControl {
    func removeBorders() {
        setBackgroundImage(imageWithColor(backgroundColor!), forState: .Normal, barMetrics: .Default)
        setBackgroundImage(imageWithColor(tintColor!), forState: .Selected, barMetrics: .Default)
        setDividerImage(imageWithColor(UIColor.clearColor()), forLeftSegmentState: .Normal, rightSegmentState: .Normal, barMetrics: .Default)
    }

    // create a 1x1 image with this color
    private func imageWithColor(color: UIColor) -> UIImage {
        let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
        UIGraphicsBeginImageContext(rect.size)
        let context = UIGraphicsGetCurrentContext()
        CGContextSetFillColorWithColor(context, color.CGColor);
        CGContextFillRect(context, rect);
        let image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return image
    }
}

调用上面的函数。

segmentedControl.removeBorders()


 类似资料:
  • 有没有一种方法可以完全删除TextField的边框?例如,我想显示该文本中的文本:

  • 我有一个像上面一样的pojo 用于创建json请求对象的代码如下: 我只是想通过不删除任何上述代码从args中删除userIds。 提前谢谢。

  • 问题内容: 我能够从中删除标题栏,但我不知道如何删除边框。 问题答案: 要删除边框,只需致电 根本没有显示任何边框。

  • 我正试图上传一个图像到谷歌API。我在用电话。net网络客户端。上传文件。当我上传时,请求包括一个内容类型multipart/formdata;boundary=在请求中,我得到以下错误。 “内容类型多部分/表单数据;边界=--------------8d0738def5b9322不是有效的输入类型” 有没有办法从请求中删除此内容,或者我需要使用其他上传方法? 留档要求的请求格式。 POST/fe

  • Tiller在我的kubernetes集群中工作不正常。我要删除所有的蒂勒。分蘖(2.5.1)有1个展开,1个复制集和1个荚。 null 结果为“replicaset”tiller-deploy-2745651589“deleted” 但是,会立即重新创建tiller-deploy-2745651589 Kubectl get RS-N kube-system显示tiller-deploy-274

  • 在我的应用程序中,我使用了一个活动和四个片段。在这个应用程序中,我使用了导航组件。我的片段加载顺序是A- 在设备背面的碎片D中,按下按钮,我想从背面移除碎片C,以便碎片B可以打开。有人建议我怎么做吗提前谢谢 这是我的导航图。xml