[swift]绑定到另一个类中的方法框架的 UIView 帧

标签: UIView Swift
发布时间: 2017/3/6 22:53:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

目前,我有 MethodUIView ,已添加为子视图。我想知道我如何能保持方法的属性,所以它的框架规定的大小 UIView

NSObject:

public class func drawCanvas1(frame frame: CGRect = CGRect(x: 0, y: 0, width: 86, height: 31)) {

    let rectanglePath = UIBezierPath(rect: CGRect(x: frame.minX + frame.width - 86, y: frame.minY + floor((frame.height) * 0.00000 - 0.5) + 1, width: 86, height: frame.height - 1 - floor((frame.height) * 0.00000 - 0.5)))
    UIColor.grayColor().setFill()
    rectanglePath.fill()

}

UIView:

class shapeTestUI: UIView {

    override func drawRect(rect: CGRect) {        
        StyleKitName.drawCanvas1()        
    }
}

视图控制器︰

var block1: shapeTestUI = shapeTestUI()

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor(red: 38.0 / 255, green: 151.0 / 255, blue: 68.0 / 255, alpha: 1)

    let block = createBlock(block1)
    self.view.addSubview(block)

}

func createBlock(blocks:UIView) -> UIView {

    let block = blocks as UIView!
    //block.frame = CGRectMake(0, 0, 50, 50)

    return block
}

解决方法 1:

第一,您的代码并不显示"方法"作为子视图被添加,因为这是不可能。读这篇文章︰ https://en.wikipedia.org/wiki/Method _(computer_programming)

第二,重写 drawRect 函数不添加子视图,但相反绘制 UIView 本身根据内它 (即 PaintCode StyleKit 函数) 的代码。

第三,如果你想要的 UIView 是由绘图代码框架改变您的 PaintCode 函数就像这样︰

public class func drawCanvas1(frame: CGRect) {
   let rectanglePath = UIBezierPath(rect: CGRect(x: frame.minX + frame.width - 86, y: frame.minY + floor((frame.height) * 0.00000 - 0.5) + 1, width: 86, height: frame.height - 1 - floor((frame.height) * 0.00000 - 0.5)))
   UIColor.grayColor().setFill()
   rectanglePath.fill()
}

其次,在 shapesTestUI ,你应该传递参数 rectdrawRect 到修改后的 PaintCode 函数︰

class shapeTestUI: UIView {

   override func drawRect(rect: CGRect) {        
      StyleKitName.drawCanvas1(rect)        
   }
}

最后,你应该给所需的 CGRect,在初始化时 block1 在您的视图控制器

var block1: shapeTestUI = shapeTestUI(frame: CGRect(x: 0, y: 0, width: 86, height: 31))
官方微信
官方QQ群
31647020