Я экспериментирую с блочным устройством iOS, чтобы узнать больше об особенностях пользовательского интерфейса. В настоящее время у меня возникают проблемы с попыткой заставить его работать для вращения экрана.UIImageView autoresizingmask не работает в некоторых случаях
Я могу получить блоки для правильной настройки после вращения экрана, но у меня возникли проблемы с получением UIImageView для замены весла.
Мой код разделен следующим образом, вызовы VC инициализируют объект класса BlockModel. Этот объект сохраняет свойство CGRect (которое является CGRect, соответствующим ImageView).
Затем VC создает изображениеView, инициализированное с помощью изображения весла, устанавливает свойство автообновления в виде изображения (для создания гибких внешних масок), устанавливает кадр на основе CGRect в объекте модели и добавляет изображение в качестве вспомогательного объекта - просмотр основного вида, обрабатываемого VC.
Код приведен ниже.
Когда я поворачиваюсь, я вижу, что ImageView не будет автоматически изменен.
Если я делаю все изображение и создание CGRect в vC, то он работает (пример кода 2).
Ожидается ли такое поведение? Если да, то почему авторезистирование не срабатывает, если CGRect получен из свойства в другом объекте?
код проекта Full Xcode является here (ссылка GitHub)
EDIT Похоже вещи не работают, если я хранить ImageView как свойство. Я делал это, чтобы иметь быстрый доступ к нему. Почему он не работает, если изображениеView хранится как свойство?
код где инициализируется модель
self.myModel = [[BlockerModel alloc] initWithScreenWidth:self.view.bounds.size.width andHeight:self.view.bounds.size.height];
инициализации Код модели
-(instancetype) initWithScreenWidth:(CGFloat)width andHeight:(CGFloat)height
{
self = [super init];
if (self)
{
self.screenWidth = width;
self.screenHeight = height;
UIImage* paddleImage = [UIImage imageNamed:@"paddle.png"];
CGSize paddleSize = [paddleImage size];
self.paddleRect = CGRectMake((self.screenWidth-paddleSize.width)/2, (1 - PADDLE_BOTTOM_OFFSET)*self.screenHeight, paddleSize.width, paddleSize.height);
}
return self;
}
код в VC, где инициализируется ImageView
self.paddleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"paddle"]];
self.paddleView.backgroundColor = [UIColor clearColor];
self.paddleView.opaque = NO;
self.paddleView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
NSLog(@"Paddle rect is %@",NSStringFromCGRect(self.myModel.paddleRect));
[self.paddleView setFrame:self.myModel.paddleRect];
[self.view addSubview:self.paddleView];
Если я вместо этого использовать этот код в VC для инициализации ImageView вещи работают
UIImage* paddleImage = [UIImage imageNamed:@"paddle.png"];
CGSize paddleSize = [paddleImage size];
CGRect paddleRect = CGRectMake((self.view.bounds.size.width-paddleSize.width)/2, (1 - PADDLE_BOTTOM_OFFSET)*self.view.bounds.size.height, paddleSize.width, paddleSize.height);
UIImageView *paddleView = [[UIImageView alloc] initWithImage:paddleImage];
paddleView.backgroundColor = [UIColor clearColor];
paddleView.opaque = NO;
paddleView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
[paddleView setFrame:paddleRect];
[self.view addSubview:paddleView];