我設法得到它。這是我是如何做到這一點的:
我創建了一個函數,它將形狀傳遞給我並返回要移動到位於視圖範圍內的位置。
func randomizeLocation(shape: CGRect) -> CGPoint {
let randomX = arc4random_uniform(UInt32(gameBoard.frame.width - shape.width)) + UInt32(shape.width/2)
let randomY = arc4random_uniform(UInt32(gameBoard.frame.height - shape.height)) + UInt32(shape.height/2)
return CGPointMake(CGFloat(randomX), CGFloat(randomY))
}
只是在談論的x座標(左/右) 這裏的邏輯是,arc4random_uniform將返回0和給定數量之間的隨機#( - 1)。
但是,您不希望從零開始的數字,因爲這會將對象從屏幕邊緣向左移動1/2。因此,如果將1/2的寬度添加到整體函數中,則永遠不會出現在屏幕的左側。
爲了防止出現在屏幕的右側,您希望屏幕寬度的最大值減去對象寬度的1/2。爲了得到這個結果,你必須指定你傳遞給arc4random函數的編號減去整個形狀的寬度,,因爲當你添加後半部分時,移動的距離是對象寬度的1/2(最小和最大返回值)。
因此,要使用此功能,把你的目標,可以說一個UILabel和這個功能導致這樣設置中心:
let myLabel = UIButton(type: .Custom)
myLabel.frame = CGRectMake(100, 100, 100, 100)
myLabel.center = randomizeLocation(myLabel.bounds)
而且它。順便說一句,我沒有考慮到-1在回報b/c我覺得一個像素太不重要了,以免打擾..
我已經管理完成它。 – Coolboylp
我試圖找出完全相同的東西,你可以請你發佈你的解決方案。 – Lkabo
@Lababo我很快就會發布代碼,我從網上收集了解決方案。 – Coolboylp