2016-06-24 5 views
0

現在、私はサブビューとして追加されたUIViewの中にMethodを持っています。私はどのようにフレームがUIViewのサイズを指示するようにメソッドのプロパティを保持できるか知っています。別のクラスのメソッドフレームへのバインドされた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機能をオーバーライドするサブビューを追加する代わりに、その内部コード(すなわちPaintCode StyleKit関数)に従ってUIView自体を描画しません。

第三に、あなたが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に、あなたはdrawRectのパラメータrectを渡す必要があります修正PaintCode関数に:あなたのビューのコンでblock1を初期化するとき

class shapeTestUI: UIView { 

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

そして最後に、あなたが希望CGRectを与える必要がありますローラー

var block1: shapeTestUI = shapeTestUI(frame: CGRect(x: 0, y: 0, width: 86, height: 31)) 
+0

ありがとう、アイケ。今週私に助けてくれた2番目か3番目の質問。それを謝る。 – Geppelt

関連する問題