2014-10-12 2 views
1

Делаю одну игру вид приложения в Xcode 6. Я создал UIImageView и объявил его в моем файле .h в * областиКак изменить положение 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); 

Есть и другие способы сделать это, но для меня это лучший вариант, если вы используете автоматическую компоновку.


Что касается вашего другого вопроса, «имеет ли значение, если я использую авто-макет?», Это личный выбор! Но для меня это стоит того, что облегчает поддержку ландшафтного режима и устройств с разными размерами экрана.

Смежные вопросы