i'm trying make simple app. so, in part, i'm trying use subview draw circle on screen.
this view controller class:
gameview view linked in the storyboard. ballview view add in.
class gameviewcontroller: uiviewcontroller { @iboutlet var gameview: uiview! var ballview = gameballview() override func viewdidload() { super.viewdidload() gameview.addsubview(ballview) ballview.setneedsdisplay() gameview.setneedsdisplay() } } class gameballview: uiview { override func drawrect(rect: cgrect) { let rectforball = cgrect(x: 50, y: 250, width: 20, height: 20) let path = uibezierpath(ovalinrect: rectforball) path.fill() path.stroke() } } drawrect called, reason nothing shows on screen. know did wrong?
your gameballview, ballview, has been assigned no frame. has 0 size, default being frame rect of cgrectzero. there reason why designated initializer of uiview init(frame:)! rectangle of 0 size invisible: point, infinitesimal.
thus, should giving view reasonable frame accommodate drawing; example:
var ballview = gameballview(frame:cgrectmake(50,250,20,20)) then, in drawrect, draw inside bounds of ballview — remember, drawing respect ballview itself, not game view:
let rectforball = cgrect(x: 0, y: 0, width: 20, height: 20) or better:
let rectforball = rect // parameter `drawrect:`
Comments
Post a Comment