首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >界面生成器中UIView的边框颜色不起作用?

界面生成器中UIView的边框颜色不起作用?
EN

Stack Overflow用户
提问于 2013-02-10 06:19:28
回答 13查看 64.1K关注 0票数 74

我正在尝试通过IB设置视图的图层属性。除了边框的颜色(属性layer.borderColor)外,其他所有内容都有效:

我记得一年前遇到了这个问题,我最终通过编程解决了这个问题。尽管如此,我仍然可以通过编程来实现这一点,但我很好奇为什么layer.borderColor属性从不通过接口构建器工作。我不想导入QuartzCore,然后只因此而编写额外的代码行,这似乎有点过头了。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2013-02-22 03:16:24

这是可以做到的,但它不是一个内置的功能。这是因为User Defined Runtime Attributes面板中的Color类型创建UIColor,而layer.borderColor持有CGColorRef类型。不幸的是,没有办法在接口生成器中分配CGColorRef类型。

但是,这可以通过代理属性来实现。有关此问题的可能解决方案,请参阅另一个问题的Peter DeWeese's answer。他的回答定义了一个允许通过Interface Builder设置代理颜色的类别。

票数 82
EN

Stack Overflow用户

发布于 2016-08-20 23:44:12

复制并粘贴此类:

代码语言:javascript
复制
import UIKit

@IBDesignable class BorderView : UIView {
    @IBInspectable var borderColor: UIColor = .clear {
        didSet {
        layer.borderColor = borderColor.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }
}

现在,在Interface Builder中,转到Identity检查器并将视图设置为CustomView类。

在此之后,查看您的属性检查器:

不再需要纠结于用户定义的运行时属性。您所做的更改也将显示在画布上!

票数 26
EN

Stack Overflow用户

发布于 2015-05-19 03:43:32

我对移植Bartłomiej Semańczyk对Swift的回答有两点看法:

在视图控制器中为CALayer创建一个扩展:

代码语言:javascript
复制
import UIKit

extension CALayer {
    func borderUIColor() -> UIColor? {
        return borderColor != nil ? UIColor(CGColor: borderColor!) : nil
    }

    func setBorderUIColor(color: UIColor) {
        borderColor = color.CGColor
    }
}
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14792238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档