2014-10-12 45 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); 

还有其他方法可以做到这一点,但对我而言,如果您使用自动布局,这是最好的方法。


至于你的其他问题,“如果我使用自动布局?”,这是个人的选择!但对我而言,这是非常值得的,因为它支持具有不同屏幕尺寸的横向模式和设备更容易。

相关问题