Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为UIView创建添加边框的子类的步骤是什么?_Ios_Swift_Uiview_Subclassing - Fatal编程技术网

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

Ios 为UIView创建添加边框的子类的步骤是什么?,ios,swift,uiview,subclassing,Ios,Swift,Uiview,Subclassing,在我当前的项目中,我经常创建UIView以在视图上放置一个灰色矩形。我通常先在布局上放置白色视图,然后在viewDidLoad()中设置所有边框。现在,我决定编写一个子类,自动设置视图的边界,然后将所有这些视图设置为使用该子类,从而加快速度。但我不知道在子类上放在哪里: self.layer.borderWidth = 2; self.layer.borderColor = UIColor.grayColor().CGColor; 我是否将其设置为覆盖init()?是否需要覆盖UIView的每

在我当前的项目中,我经常创建UIView以在视图上放置一个灰色矩形。我通常先在布局上放置白色视图,然后在
viewDidLoad()
中设置所有边框。现在,我决定编写一个子类,自动设置视图的边界,然后将所有这些视图设置为使用该子类,从而加快速度。但我不知道在子类上放在哪里:

self.layer.borderWidth = 2;
self.layer.borderColor = UIColor.grayColor().CGColor;
我是否将其设置为
覆盖init()
?是否需要覆盖UIView的每个版本的
init
?还是有更好的方法

谢谢

PS:如果有任何方法可以使边框在故事板设计时立即显示出来(我认为这与
可绘制的
有关,但我一点也不了解),我将非常感激

编辑:

从被接受的答案中,我得到了这个答案:基本上是这样的:

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;
  }
}

这里有一个非常详细的答案:

基本上,您应该覆盖:


init?(coder-aDecoder:NSCoder)
init(frame:CGRect)
以及
awakeFromNib()
。只需从设置边界的位置调用另一个函数

您需要创建UIView的子类,并根据您在此类中的需要声明IBInspectable属性

请尝试以下链接作为示例:


谢谢!从你的链接中真正成为我的解决方案的答案是:它在init frame和init coder上都放置了一个
didLoad()
函数调用。我明白了,所以它是可检查/可设计的,而不是可绘制的lol。我现在正在检查它。谢谢