这是我的RectangleView
:
import UIKit
class RectangleView: UIView
{
init(frame: CGRect)
{
// Initialization code
super.init(frame: frame)
}
/*
override func drawRect(rect: CGRect)
{
// Drawing code
}
*/
}
Run Code Online (Sandbox Code Playgroud)
我RectangleView
在我的上面添加CustomViewController
:
import UIKit
class CustomViewController: UIViewController
{
var ballX:Int = 0
var ballY:Int = 0
let BALLWIDTH:Int = 50
let BALLHEIGHT:Int = 50
var navigationHeight:Double = 0.0
var pos:CGPoint?
var rectangleView:RectangleView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.ballX = Int(arc4random_uniform(320));
self.ballY = Int(arc4random_uniform(480));
self.navigationHeight = Double(self.navigationController.navigationBar.frame.size.height)
var rect = CGRect(x: 0, y: 0, width: self.BALLWIDTH, height: self.BALLHEIGHT)
self.pos = CGPoint(x: self.ballX, y: self.ballY);
println("x: \(self.ballX), y: \(self.ballY)")
self.rectangleView = RectangleView(frame: rect)
self.rectangleView!.backgroundColor = UIColor.redColor()
self.view.addSubview(self.rectangleView!)
NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: Selector("moveBall"), userInfo: nil, repeats: true)
}
func moveBall()
{
self.rectangleView!.center = CGPointMake(self.rectangleView!.center + self.pos!.x, self.rectangleView!.center + self.pos!.y)
}
...
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息
'RectangleView?' does not have a member named 'center'
Run Code Online (Sandbox Code Playgroud)
我应该定义这center
对我RectangleView
?我的RectangleView
继承UIView
,所以我感到非常困惑.谢谢你的帮助.
编辑
我用这个代码
func moveBall()
{
if let rv = self.rectangleView {
rv.center = CGPointMake(rv.center + self.pos!.x, rv.center + self.pos!.y)
}
Run Code Online (Sandbox Code Playgroud)
我收到了新的错误消息
'CGPoint' is not convertible to 'UInt8'
Run Code Online (Sandbox Code Playgroud)
我觉得rv.center
类型UInt8
,但self.post!.x
是nsnumber
,所以我我怎么能转换成CGPointMake
接受类型?我有转换UInt8(self.pos!.x)
并将计算结果CGPointMake
再次转换为接受类型?
还有其他最好的方法吗?谢谢你的帮助.
!
-unwrapping一个可选项返回的值目前是不可变的(参见Lattner的解释).
尝试:
if let rv = self.rectangleView {
rv.center = ...
}
Run Code Online (Sandbox Code Playgroud)
我认为这可以被认为是Swift中的已知错误.
归档时间: |
|
查看次数: |
5440 次 |
最近记录: |