我试图制作一个简单的应用。为此,我尝试使用子视图在屏幕上绘制圆圈。
这是我的视图控制器类:
gameView是故事板中链接的视图。 ballView是我想添加的视图。
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,但由于某种原因屏幕上没有显示任何内容。有谁知道我做错了什么?
答案 0 :(得分:0)
您的GameBallView Option<&str>
已被分配为ballView
。因此它的大小为零,默认为CGRectZero的框架矩形。有一个很好的理由为什么UIView的指定初始化器是frame
!零大小的矩形是不可见的:它只是一个点,一个无穷小。
因此,你应该给这个观点一些合理的框架,以适应你的绘画;例如:
init(frame:)
然后,在 var ballView = GameBallView(frame:CGRectMake(50,250,20,20))
中,在<{1}}中绘制内部 - 请记住,您现在正在绘制drawRect
本身,而不是游戏视图:
ballView
甚至更好:
ballView