Привет всем У меня есть UIViewController
и UIImageView, и у меня есть SwipeGestureRecognizer
. Так что если пользователь проведите пальцем влево или вправо, он будет change
UIImageView
image.So далеко его работает. Я не могу использовать UIScrollView
размер одного из изображений, с поддержкой пейджинга. Я хочу добиться эффекта перетаскивания и увидеть часть следующего UIImageView
, как в UIScrollView
изображений.Как изменить изображение UIImageView с помощью SwipeGestureRecognizer?
ответ
*
Вы можете попробовать что-то imageView.layer, чтобы дать некоторое эффект анимации. *
Привет, спасибо за ответ .. Я смотрю анимацию, можете ли вы привести пример того, как это можно достичь? – veereev
Добавить scroollview в MainView (набор кадра соответственно)
[mainview addSubview:scr];
написать метод, как:
- (void)setupScrollView:(UIScrollView*)scrMain {
}
Затем в viewDidLoad
проход Scrollview к методу,
[self setupScrollView:scr];
- (void)setupScrollView:(UIScrollView*)scrMain {
// we have 10 images here.
// we will add all images into a scrollView & set the appropriate size.
for (int i=1; i<=5; i++) {
// create image
// UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"sti%02i.png",i]];
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"sti%02i.png",i]];
// create imageView
// NSLog(@"===============>%d",i);
UIImageView *imgV = [[UIImageView alloc] initWithFrame:CGRectMake((i-1)*scrMain.frame.size.width, 0, scrMain.frame.size.width, scrMain.frame.size.height)];
// set scale to fill
imgV.contentMode=UIViewContentModeScaleToFill;
// set image
[imgV setImage:image];
// apply tag to access in future
imgV.tag=i+1;
// add to scrollView
[scrMain addSubview:imgV];
}
// set the content size to 10 image width
[scrMain setContentSize:CGSizeMake(scrMain.frame.size.width*5, scrMain.frame.size.height)];
// enable timer after each 2 seconds for scrolling.
// [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:nil userInfo:nil repeats:YES];
}
It позвольте вам двигаться как в ужасном ctions вручную.
Я думаю, что лучше будет использовать UIPanGestureRecognizer
:
UIPanGestureRecognizer * pan1 = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(moveObject:)];
pan1.minimumNumberOfTouches = 1;
[image1 addGestureRecognizer:pan1];
-(void)moveObject:(UIPanGestureRecognizer *)pan;
{
image1.center = [pan locationInView:image1.superview];
}
когда вы начинаете перетаскивание проверить как-то направление. если направление слева направо, добавьте изображение «до» на экран с помощью -image.width и в методе перемещения переместите это изображениеBefore.center = [pan locationInView: image1.superview]; слишком. Если направление направо налево, добавьте «следующее» изображение в scree с + screenize + image.width и int it move move, переместите это изображениеNext.center = [pan locationInView: image1.superview]; слишком.
Я не пробовал это, но я думаю, он должен работать. Я надеюсь, что это помогает
EDIT:
Я нашел для вас, как определить направление:
-(void)moveObject:(UIPanGestureRecognizer *)pan;
{
CGPoint vel = [pan velocityInView:self.view];
if (vel.x > 0)
{
// user dragged towards the right
counter++;
}
else
{
// user dragged towards the left
counter--;
}
}
привет спасибо, я пытаюсь ваш код .. что такое «rec»? в CGPoint vel = [rec speedInView: self.view] ;? – veereev
О, я сожалею: D это должен быть кастрюля, не rec Я его отредактировал – incmiko
Привет, спасибо. Можете ли вы дать мне более подробную информацию о том, если направление справа налево, добавьте «следующее» изображение в scree с + screenize + image.width и int he move method, переместите это изображениеNext.center = [pan locationInView: image1.superview]; слишком. .. Я не получил его, хотя :) – veereev
Простой ответ:
Добавить два жест для представления изображения и поместите одну переменную счетчика , переключить значение счетчика на основе прокрутки и нет. изображений. Наконец, измените изображение на основе подсчета.
Используйте этот код, чтобы он работал отлично и просто.
- (void)addAnimationPresentToView:(UIView *)viewTobeAnimated
{
CATransition *transition = [CATransition animation];
transition.duration = 0.30;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[transition setValue:@"IntroSwipeIn" forKey:@"IntroAnimation"];
transition.fillMode=kCAFillModeForwards;
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromRight;
[viewTobeAnimated.layer addAnimation:transition forKey:nil];
}
- (void)addAnimationPresentToViewOut:(UIView *)viewTobeAnimated
{
CATransition *transition = [CATransition animation];
transition.duration = 0.30;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[transition setValue:@"IntroSwipeIn" forKey:@"IntroAnimation"];
transition.fillMode=kCAFillModeForwards;
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromLeft;
[viewTobeAnimated.layer addAnimation:transition forKey:nil];
}
- (void)viewDidLoad
{
[super viewDidLoad];
count = 0;
// Do any additional setup after loading the view from its nib.
[self.imageViewSwipe setUserInteractionEnabled:YES];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeRight:)];
// Setting the swipe direction.
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
// Adding the swipe gesture on image view
[self.imageViewSwipe addGestureRecognizer:swipeLeft];
[self.imageViewSwipe addGestureRecognizer:swipeRight];
}
-(void)changeImage
{
switch (count) {
case 1:
self.imageViewSwipe.image = [UIImage imageNamed:@"Screen Shot 2013-09-17 at 10.57.51 AM.png"];
break;
case 2:
self.imageViewSwipe.image = [UIImage imageNamed:@"Screen Shot 2013-09-17 at 10.58.04 AM.png"];
break;
case 3:
self.imageViewSwipe.image = [UIImage imageNamed:@"Screen Shot 2013-09-17 at 10.58.00 AM.png"];
break;
default:
break;
}
}
-(void)handleSwipe:(id)sender
{
if(count < 4)
{
count++;
UIImageView *moveIMageView = self.imageViewSwipe;
[self addAnimationPresentToView:moveIMageView];
[self changeImage];
}
}
-(void)handleSwipeRight:(id)sender
{
if(count>0)
{
count--;
UIImageView *moveIMageView = self.imageViewSwipe;
[self addAnimationPresentToViewOut:moveIMageView];
[self changeImage];
}
}
-(void)handleSwipe:(id)sender
{
if(count < 4)
{
count++;
[self changeImage];
}
}
-(void)handleSwipeRight:(id)sender
{
if(count>0)
{
count--;
[self changeImage];
}
}
-(void)panTableView:(UISwipeGestureRecognizer *)pan{
if (pan.state==UIGestureRecognizerStateEnded) {
int curr=currentPage;
if (pan==self.panGestureLeft)
{
// user dragged towards the right
CATransition *transition = [CATransition animation];
transition.duration = 0.35;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromRight;
transition.delegate = self;
[scrollview.layer addAnimation:transition forKey:nil];
}
else if (pan==self.panGestureRight)
{
// user dragged towards the left
CATransition *transition = [CATransition animation];
transition.duration = 0.35;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype =kCATransitionFromLeft;
transition.delegate = self;
[scrollview.layer addAnimation:transition forKey:nil];
}
}
}
Реализовать горизонтального стола Scrolling
Создать TableView и преобразовать таблицу
self.horizontalTableView.transform = CGAffineTransformMakeRotation(-M_PI * 0.5);
Затем применяется преобразование в обратном направлении на содержимое внутри клетка.
CGAffineTransformMakeRotation(M_PI * 0.5)
Если вы хотите, вы можете поместить его в другую TableView внутри пользовательских UITableViewCell, и имеет вертикальную таблицу горизонтальных таблиц.
Вы получаете все преимущества Native прокрутки
Смотрите этот учебник:
- 1. Изменить изображение UIImageView с помощью салфетки
- 2. Невозможно изменить изображение UIImageView
- 3. UIButton изменить изображение UIImageView
- 4. UIImageView немедленно изменить изображение
- 5. Изменить изображение в UIImageView
- 6. Как изменить изображение в UIImageView с помощью UISlider в Swift
- 7. UIWebview с SwipeGestureRecognizer
- 8. Изменить изображение при нажатии uiimageview
- 9. Как изменить изображение UIImageView в другом контроллере?
- 10. Как изменить изображение в настраиваемом классе UIImageView
- 11. Как изменить происхождение UIImageView
- 12. Как изменить угловые позиции UIImageView?
- 13. Swift 3: Как изменить изображение кнопки на изображение UIImageView
- 14. Установить изображение определенного UIImageView с помощью UIImagePickerController
- 15. Установить изображение UIImageView с помощью URL-адреса
- 16. Изменить изображение после запуска/завершения анимации UIImageView
- 17. Удалить изображение с UIImageView
- 18. Как изменить изображение UIImageView, находящегося внутри UIButton, программно?
- 19. Изменить изображение в UIImageView в другом классе
- 20. Настройка SwipeGestureRecognizer, необходимо уточнение
- 21. Как изменить размер UIImageView?
- 22. Как установить изображение одного UIImageView на изображение другого UIImageview
- 23. Изменение UIImageView с помощью кнопки
- 24. изменить UIImageView высота с UISlider
- 25. Анимация, изменяющая изображение UIImageView
- 26. Программно изменить изображение UIImageView с изображением1 на image2
- 27. Как загрузить изображение внутри UIImageView, созданного с помощью Interface Builder?
- 28. Как установить фоновое изображение с помощью UIImageView в Swift
- 29. Как заменить действие SwipeGestureRecognizer в UIWebView
- 30. Как я могу сделать UIImageView программным образом изменить его изображение?
так что вы хотели бы сделать изменение изображения с помощью салфетки вместо Scrollview, но с тем же «эффектом»? – incmiko
Да, часть изменения изображения работает со стрелками влево или вправо. Да, я пытаюсь добиться такого же эффекта, как если бы изображения находились в uiscrollview изображений при запуске, вы можете увидеть часть следующего или предыдущего изображения – veereev
без UIScrollview вы не можете ожидать, что эффект, подобный UIImage2, должен немедленно прийти к UIImage1. Но вы можете изменить изображения на основе прокрутки с помощью UISwipeGesture Recognozer. Для этого вам необходимо динамически выводить изображения из изображений NSArray. – wesley