2016-04-14 39 views
0

我想在視圖對象的特定區域內移動按鈕的位置(X & Y)。Xcode 7 Swift 2 - 在特定視圖區域內移動按鈕

到目前爲止我所做的是,我在主屏幕上添加了一個視圖對象,並且在視圖中還添加了一個按鈕,至此確定。

現在,我設法得到視圖對象的邊界,我知道我的按鈕的大小說(50x50)。所以我想要的是,當我點擊按鈕時,它應該移動到另一個隨機位置,但在視圖對象內,它不應該移動到視圖對象邊界之外。現在在我的按鈕中發生了什麼似乎是基於隨機X & Y將它的一部分移動到視圖對象之外。

任何幫助將不勝感激。

+0

我已經管理完成它。 – Coolboylp

+0

我試圖找出完全相同的東西,你可以請你發佈你的解決方案。 – Lkabo

+0

@Lababo我很快就會發布代碼,我從網上收集了解決方案。 – Coolboylp

回答

0

我設法得到它。這是我是如何做到這一點的:

我創建了一個函數,它將形狀傳遞給我並返回要移動到位於視圖範圍內的位置。

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我覺得一個像素太不重要了,以免打擾..

相關問題