2010-06-10 4 views
0

У меня есть UIView в середине представления, которое я использую в качестве игрового поля (в 2-м какао-представлении). Это изображение имеет фоновое изображение того же размера, что и вид. Изменение размера представления Я использую анимацию, чтобы она выглядела гладко (и это отлично работает). Однако, когда начинается анимация, фоновое изображение сразу же изменяет размер, черепицу или обрезается до размера, который при завершении анимации фоновое изображение физически одного размера.Нечетное изменение размера изображения на анимации UIView

Я не хочу этого, я хочу, чтобы изображение всегда соответствовало виду, независимо от размера представления.

UIImage *bgImage = [UIImage imageNamed:@"head.png"]; 
... // resize the image returning another image 
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:resizedImage]; 
[UIView beginAnimations:@"resizeView" context:nil]; 
[UIView setAnimationDuration:.5]; 
int localViewSize = ... // work out view sizes 
self.view.frame = CGRectMake(... ,localViewSize,localViewSize); 
[UIView commitAnimations]; 

Это выглядит очень странно, поскольку оно перескакивает на другой размер, а затем оживляет первоначальный размер.

Я предполагаю, что, возможно, мне придется сделать отдельный вид под моим главным видом, но это единственный способ?

ответ

1

Я подозреваю, что «образное изображение» отображается в содержимом слоя (эффективно текстура), а содержимое слоя растягивается, чтобы оно соответствовало. Простым способом это установить self.contentMode = UIViewContentModeCenter или около того; помните, что это работает, когда ваш взгляд растет, но, вероятно, отобразит пустую рамку, когда ваше представление будет сокращено.

+0

Итак, содержимое изменяется в соответствии с новым представлением, после чего происходит анимация? Я попробую режим центра контента, хотя в идеале я хочу, чтобы фоновое изображение принимало весь вид при любом масштабировании. Спасибо – Woody

+0

Если изображение достаточно большое, просто используйте изображение в UIImageView с правильным режимом содержимого и установите clipToBounds = YES. –

+0

Я решил на данный момент сделать это по-другому, так как это просто не сработало! – Woody

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