创建一个为UIView添加边框的子类的步骤是什么?

3
在我的目前的项目中,我经常创建一个UIView来将灰色矩形放在视图上。通常我先将白色视图放在布局上,然后在viewDidLoad()中设置所有边框。现在我决定通过编写一个子类来加速这个过程,这个子类将自动设置视图的边框,然后将所有这些视图都设置为使用该子类。但我不知道将这段代码放在子类的哪里:
self.layer.borderWidth = 2;
self.layer.borderColor = UIColor.grayColor().CGColor;

我应该把它放在override init()吗?我需要为UIView覆盖每个版本的init吗?还是有更好的方法来做到这一点?谢谢。
PS:如果有任何方法可以使边框可以立即显示在故事板设计时间(我认为它与drawable有关,但我完全不理解),我将非常感激!
编辑:从被接受的答案中,我得到了这个答案:https://dev59.com/EWQo5IYBdhLWcg3whPzI#33721647,基本上是这样的:
import UIKit

class MyView: UIView {
  override init(frame: CGRect) {
      super.init(frame: frame)
      didLoad()
  }

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

  convenience init() {
    self.init(frame: CGRectZero)
  }

  func didLoad() {
    //Place your initialization code here
    self.layer.borderWidth = 2;
    self.layer.borderColor = UIColor.grayColor().CGColor;
  }
}
2个回答

1

我明白了,所以它是可检查/可设计的,而不是可绘制的哈哈。我现在正在检查它。谢谢! - Chen Li Yong

0
这里有一个相当详细的答案:

Proper practice for subclassing UIView?

基本上,您应该重写:

init?(coder aDecoder: NSCoder)init(frame: CGRect) 以及 awakeFromNib()。只需从中调用另一个函数,在那里设置边框即可。


谢谢!从您提供的链接中,真正成为我的解决方案的答案是这个:https://dev59.com/EWQo5IYBdhLWcg3whPzI#33721647,它在init frame和init coder上都调用了didLoad()函数。 - Chen Li Yong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接