Анимация обрезки UIView / UIImageView - PullRequest
0 голосов
/ 18 октября 2011

У меня есть этот кусок кода, который помещен в accelerometer: didAccelerate, который изменяет обрезку изображения.В основном, когда вы наклоняете iPad, изображение обрезается ( без изменения размера ), что является именно тем эффектом, который я ищу.Примечание: self.xPos зависит от положения акселерометра.x.

UIImage *originalStringImage = [UIImage imageNamed:@"string.png"];
CGImageRef imageRef = CGImageCreateWithImageInRect([originalStringImage CGImage], CGRectMake(0.0f,0.0f, self.xPos+50.0f, 26.0f));
[self.stringImageView setImage:[UIImage imageWithCGImage:imageRef]];
self.stringImageView.frame = CGRectMake(10.0f, self.stringYPos, self.xPos+50.0f, 26.0f);

Теперь я хотел бы сделать то же самое, хотя и в качестве анимации UIView.Что-то между этими параметрами анимации UIView:

UIImageView *pageStringImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10.0f, placeString, 0.0f, 42.0f)];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelay:2.0];
[UIView setAnimationDuration:3.0];
pageStringImageView.frame = CGRectMake(10.0f, placeString, 900.0f, 42.0f);
UIImage *originalStringImage = [UIImage imageNamed:@"string.png"];
CGImageRef imageRef = CGImageCreateWithImageInRect([originalStringImage CGImage], CGRectMake(10.0f,placeString, pageStringImageView.frame.origin.x, 42.0f));
[pageStringImageView setImage:[UIImage imageWithCGImage:imageRef]];
[UIView commitAnimations]; 

Но все вышеперечисленное не сработает.На самом деле это даже не показывает изображение.Я считаю, что основная трудность здесь заключается в динамическом изменении размера изображения во время работы анимации UIView.

Есть предложения или вопросы?

1 Ответ

4 голосов
/ 18 октября 2011

Это должно быть довольно просто сделать, если вы используете свойства масштабирования вашего UIImageView (свойство .contentMode).

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

Так что, если вам нужно было использовать стандартный UIView блок анимации дляотрегулируйте кадр на UIImageView, чтобы анимировать масштабирование или уменьшение изображения.Но если вы измените свойство .contentMode представления изображения, если вы измените кадр, вы можете вместо этого обрезать его.

Например, UIViewContentModeLeft выровняет содержимое с левой стороной представления, так что еслиВы регулируете ширину вида, он будет «обрезан» с правой стороны.Проверьте документацию UIView, чтобы увидеть все значения, которые вы можете иметь для contentMode.В общем, просто анимируйте изменение кадра вашего вида, но установите contentMode соответствующим образом, чтобы получить желаемый эффект кадрирования.Возможно, вам понадобится убедиться, что ваш вид установлен на ограничение по границам, хотя у меня есть ощущение, что изображения по умолчанию делают это по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...