【问题标题】:Interface Builder Clipping Designable ViewsInterface Builder 裁剪可设计的视图
【发布时间】:2015-01-28 05:31:57
【问题描述】:

我真的需要帮助。我创建了 UILabel 的 @IBDesignable 子类,它在 XCode Interface Builder 中运行良好。但是,即使我将 'clipsToBounds' 设置为 false,Interface Builder 仍然会在更改 @IBInspectable 属性的同时对其进行剪辑。

如果我在模拟器或设备上运行应用程序,则 UILabel 不会被剪裁并给我想要的结果(同时仍然应用 Interface Builder 的值)。

变更前(子视图可见)

在 INTERFACE BUILDER 更改之后(子视图不在视图中)

在模拟器中更改后(子视图符合预期)

任何帮助将不胜感激。自定义类的代码如下。

@IBDesignable class UIFeaturedLabel: UILabel {

@IBInspectable var borderWidth: Float = 4
@IBInspectable var borderOffsetX: Float = 15
@IBInspectable var borderOffsetY: Float = 5
@IBInspectable var borderColor: UIColor = UIColor.whiteColor()

private var headerView:UIView!
private var footerView:UIView!

override init() {
    super.init()
    createViews()
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    createViews()
}

override init(frame: CGRect) {
    super.init(frame: frame)
    createViews()
}

func createViews() {
    clipsToBounds = false
    layer.masksToBounds = false

    headerView = UIView()
    footerView = UIView()

    headerView.backgroundColor = UIColor.whiteColor()
    footerView.backgroundColor = UIColor.whiteColor()

    addSubview(headerView)
    addSubview(footerView)
}

override func layoutSubviews() {
    super.layoutSubviews()

    let left = CGFloat( -borderOffsetX )
    let right = CGFloat( frame.width + CGFloat(borderOffsetX*2) )
    let top = CGFloat( -borderOffsetY )
    let bottom = CGFloat( frame.height - CGFloat(borderWidth/2) ) + CGFloat( borderOffsetY )

    headerView.frame = CGRectMake(left, top, right, CGFloat(borderWidth))
    footerView.frame = CGRectMake(left, bottom, right, CGFloat(borderWidth))
}
}

【问题讨论】:

  • 我也遇到了这个问题,我认为这是 Xcode 中的另一个错误。从 Xcode 7.2 (7C68) 开始,这个最小示例 stackoverflow.com/a/25475536/539149 在 Interface Builder 中不起作用。

标签: ios xcode interface-builder rendering ibdesignable


【解决方案1】:

XCode 7.3 iOS9.3 仍然存在,但已在 XCode 版本 8.0 beta (8S128d) 中修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多