2015-10-12 111 views
0

我做了一个继承自UIView的类。在那个课上,我想画一个PNG图像。但是,当我在viewcontroller中运行它时,它似乎没有做任何事情。我读过,我们必须使用setNeedsDisplay才能够在viewcontroller中调用drawRect。它似乎没有更新。从视图控制器绘制类swift

class MyView: UIViewController{ 
    let tile = DrawTile() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    @IBAction func Pressed(sender: AnyObject) { 
     tile.setNeedsDisplay() 

    } 
} 

class Draw: UIView { 

    override func drawRect(rect: CGRect) { 
     let context = UIGraphicsGetCurrentContext() 
     let image = UIImage(named: "test.png") 
     let location = CGPointMake(0, 0) 
     image?.drawAtPoint(location) 

    } 
} 
+0

瓷砖是平局或DrawTile? – Chiko

+0

你可以在启动应用程序时看到图像吗? – Chiko

+0

我在启动应用程序时看不到图像。 – user187558

回答

0

您是否正在初始化您的视图?只有在初始化自定义视图并将其添加到ViewController视图时,drawRect()才会被调用。因此,它应该是这个样子:

func createCustomView(){ 

    customView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0)) 
    customView.something = something 

    self.view.addSubview(customView) 

} 

做它在viewDidLoad中(),一切都应该是好

+0

我试图 设瓦片= DrawTile(帧:CGRectMake(0,0,50,50)) view.addSubview(瓦) ,它显示该图像。有没有一种方法可以将框架初始化为手机的整个尺寸,而不仅仅是0,0,50,50?然后我只想抓住尺寸并只打印png的一部分。 – user187558

+0

得到一个完整的屏幕使用:'let tile = DrawTile(frame:self.view.frame)'其中self.view是一个UIViewController的视图。 – CarlHere