2014-10-12 53 views
1

我正在做一個單一視圖的應用遊戲在Xcode 6.我在.h文件中創建一個UIImageView,並宣佈其爲*球如何在不丟失自動佈局的情況下重新定位ImageView?

IBOutlet UIImageView *sphere; 

然後在我的.m文件,我使用下面的代碼當物體與它相交時,將它放置在隨機位置。

-(void)PlaceSphere{ 

sphereX = arc4random() %492; 
sphereX = sphereX + 34; 
sphereY = arc4random() %249; 
sphereY = sphereY + 39; 

sphere.center = CGPointMake(sphereX, sphereY); 

} 

//再往下

if(CGRectIntersectsRect(_ball.frame, sphere.frame)){ 
    [self PlaceSphere]; 

不過,我的問題是,在iOS8上,使用自動佈局......當球移動到另一個位置時,它會閃爍到一個新的位置,然後移動回到故事板上的原始位置。我將如何解決這個問題?

我也會在我的球上體驗到這一點,它會在原始球閃爍的地方移動,放置在故事板上。有沒有辦法可以解決這個問題,仍然使用自動佈局?

謝謝

我的工作沒有自動佈局現在模擬器使用iPhone 6看起來很好...所以沒有,如果它僅僅是一個單一視圖的應用程序,只要它的問題,如果我有自動佈局我使用自動調整大小選項?

回答

1

您可以爲代碼中的約束創建出口,就像其他任何接口元素一樣。你可以在代碼中改變它的值來定位視圖。

所以要做到這一點,您的視圖應該有x和y位置約束(例如,超級視圖的前導空間,超視圖的頂部空間)。您在故事板中選擇的約束,就好像它們是一個視圖,並在視圖控制器代碼爲它創建網點:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint; 
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leftConstraint; 

現在你可以用「常量」屬性更改值:

self.topConstraint.constant = 39 + (arc4random() %249); 

還有其他方法可以做到這一點,但對我而言,如果您使用自動佈局,這是最好的方法。


至於你的其他問題,「如果我使用自動佈局?」,這是個人的選擇!但對我而言,這是非常值得的,因爲它支持具有不同屏幕尺寸的橫向模式和設備更容易。

相關問題