2013-06-03 3 views
0

Я хочу, чтобы показать часть изображения в animation.I положить UIImageView в UIScrollView и установить фрейм UIImageView на (0, 0, imageWidth, imageHeight), и установить ширину фрейма UIScrollView к 0. Вот мой кодпоказать часть изображения в анимации

self.tiaoView.contentSize=CGSizeMake(316, 74);//tiaoView is an outlet of UIScrollView 
[UIView animateWithDuration:5 animations:^{ 
    CGRect rect=self.tiaoView.frame; 
    rect.size.width=316; 
    self.tiaoView.frame=rect;}]; 

Но когда я запустил его, изображение будет показано сразу, без анимации.

+0

Я не получаю вы объяснить это ясно – iEinstein

+1

ширина уже 316. Так что не следует ожидают, как ожидалось. – NeverHopeless

+0

@ NeverHopeless-То же самое, что я думал – iEinstein

ответ

2

Вы можете показать только часть изображения (сверху, снизу, слева или справа), установив UIImageView s contentMode к любому из этих

UIViewContentModeTop 
UIViewContentModeBottom 
UIViewContentModeLeft 
UIViewContentModeRight 

установка clipsToBounds = YES и изменение его кадра соответственно. Поскольку frame является анимационным свойством, эта комбинация позволит вам анимировать показ только части изображения.

Например: Если вы хотите показать только 20 точек снизу, установите imageView.contentMode = UIViewContentModeBottom; и установите его frame с высоты до 20. Изображение будет находиться у нижнего края UIImageView независимо от того, какой кадр вы ему устанавливаете.

См пример кода:

UIImage *image = [UIImage imageNamed:@"myImage"]; 

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
imageView.frame = CGRectMake(0, 0, 0, 40); 
imageView.contentMode = UIViewContentModeLeft; 
imageView.clipsToBounds = YES; 
[self.view addSubview:imageView]; 

CGRect finalFrame = imageView.frame; 
finalFrame.size.width = 40; 

[UIView animateWithDuration:1.0 animations:^{ 
    imageView.frame = finalFrame; 
}]; 

Этот код оживляет изображения, расширяя его размер от 0 размер 40.

+0

Спасибо, но это не работает. Вот мой код '// wenZiView - это выход UIImageView self.wenZiView.contentMode = UIViewContentModeLeft; [UIView animateWithDuration: 1.5 анимации:^{ CGRect rect = self.wenZiView.frame; rect.size.width = 316; self.wenZiView.frame = rect; }]; ' –

+0

Я забыл, что вам нужно установить' clipsToBounds = YES'. Пожалуйста, см. Мой отредактированный ответ с примерным кодом кода –

+0

Удивительно! Он работает так хорошо. Большое вам спасибо. –

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