无法在swift中的@IBInspectable中设置CGSize的负值

时间:2016-06-15 13:03:31

标签: swift

我正在尝试使用@IBInspectable设置按钮的阴影偏移,但它的最小值为0,但我想设置负值。

like this  button.layer.shadowOffset = CGSize(width: -10.0, height: -10.0) 
I have following code

@IBInspectable var shadowRadius: CGFloat {
       get {
            return layer.shadowRadius
        }
        set {
            layer.shadowRadius = newValue

       }
    }

1 个答案:

答案 0 :(得分:0)

看起来苹果为阴影偏移选择了错误的CGSize类型。负大小不是逻辑值。 仍然为了解决这个特殊问题,我们需要Interface builder允许我们设置负值。所以我建议的解决方法是:

  @IBInspectable var shadowWidthOffset: CGFloat {
    get {
      return _shadowOffsetWidth
    }
    set {
      _shadowOffsetWidth = newValue
    }
  }

  @IBInspectable var shadowHeightOffset: CGFloat {
    get {
      return _shadowOffsetHeight
    }
    set {
      _shadowOffsetHeight = newValue
    }
  }

  override func drawRect(rect: CGRect) {
    super.drawRect(rect)
    ...
    layer.shadowOffset = CGSizeMake(_shadowOffsetWidth, _shadowOffsetHeight)
  }