рисунок из класса ViewController Swift

Я сделал класс, который наследуется от UIView. В этом классе я хочу нарисовать изображение png. Однако, когда я запускаю его в своем контроллере просмотра, похоже, он ничего не делает. Я читал, что нам пришлось использовать setNeedsDisplay, чтобы вызвать drawRect в контроллере представления. Вроде не обновляется.

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)

    }
}

person user187558    schedule 12.10.2015    source источник
comment
tile — это Draw или DrawTile?   -  person Chiko    schedule 12.10.2015
comment
вы видите изображение при запуске приложения?   -  person Chiko    schedule 12.10.2015
comment
Я не вижу изображения при запуске приложения.   -  person user187558    schedule 13.10.2015


Ответы (1)


Вы где-то инициализируете свое представление? drawRect() будет вызываться только тогда, когда вы инициализируете свой собственный вид и добавляете его в свой вид ViewController. Так что это должно выглядеть примерно так:

    func createCustomView(){

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

    self.view.addSubview(customView)

}

сделайте это в viewDidLoad() и все должно быть в порядке

person CarlHere    schedule 12.10.2015
comment
Я попробовал let tile = DrawTile(frame: CGRectMake(0, 0, 50, 50)) view.addSubview(tile) и показал изображение. Есть ли способ, с помощью которого я могу инициализировать рамку на весь размер телефона, а не только на 0,0,50,50? Затем я хочу просто взять размеры и распечатать только часть png. - person user187558; 13.10.2015
comment
чтобы получить всю рамку экрана, используйте:let tile = DrawTile(frame:self.view.frame), где self.view - это представление UIViewController. - person CarlHere; 13.10.2015