2012-05-06 14 views
5

से दाएं या बाएं स्लाइड करके UIImageView से छवि को कैसे बदलें, इसमें है जिसमें UIImageView है और UIImage की एक सरणी है। छवि को अगली सरणी स्थिति में बदलने के लिए मैं स्लाइड सुविधा को दाएं या बाएं कैसे विकसित कर सकता हूं?UIViewController

उत्तर

8

सामान्य दृष्टिकोण एक यूआईएसक्रॉल दृश्य छवियों में से एक का आकार है, पेजिंग सक्षम है।

subviews के रूप में छवियों को जोड़ें और इस तरह की सामग्री आकार सेट ...

NSArray *images; 
CGSize imageSize; 

self.scrollView.frame = CGRectMake(10,10,imageSize.width,imageSize.height); 
self.scrollView.contentSize = CGSizeMake(imageSize.width * images.count, imageSize.height); 
self.scrollView.pagingEnabled = YES; 

CGFloat xPos = 0.0; 

for (UIImage *image in images) { 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
    imageView.frame = CGRectMake(xPos, 0.0, imageSize.width, imageSize.width); 
    [self.scrollView addSubview:imageView]; 
    xPos += imageSize.width; 
    // assuming ARC, otherwise release imageView 
} 

तुम भी उछाल को बंद कर सकता, स्क्रॉल संकेतक, आदि प्रभाव आप चाहते हैं के विवरण के आधार पर।

+0

की IBOutlet बनाने मैं इसे निश्चित नहीं की कोशिश की थी, अगर मैं अपने सुझाव सही ढंग से अनुसरण कर रही हूं, यह काम नहीं करता है, स्क्रॉलव्यू खाली रहता है। हो सकता है कि मुझे समझने की कमी की वजह से कुछ याद आ रहा है कि वस्तुओं, घटनाएं कैसे काम करती हैं ... धन्यवाद – Sweet

+0

यह उत्तर मुझे मेरी समस्या का समाधान करने वाले लिंक पर ले गया: http://www.iosdevnotes.com/2011/03/uiscrollview- पेजिंग /। धन्यवाद दान, मैंने इसे वोट दिया और उत्तर के रूप में चिह्नित किया – Sweet

1

आप बस कड़ी चोट दिशा प्राप्त कर सकते हैं छोड़ दिया है या UISwipeGestureRecognizer इस

swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(detectSwipe:)]; 
[swipeGesture setNumberOfTouchesRequired:1]; 
[swipeGesture setDirection:UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionUp]; 
[appView addGestureRecognizer:swipeGesture]; 

विधि detectSwipe UIImage सरणी के साथ खेलने के लिए अपने आगे संभाल और पिछड़े के लिए घोषित की तरह अधिकार के साथ किया जाता है। आप Apple's SimpleGestureRecognizers Demo

यह भी देख सकते हैं कि यह आपकी मदद करता है!

2

UIScrollView और UIPageControl का उपयोग करके, खींचें n UIScrollView और UIPageControl यकीन है कि वे ओवरलैप नहीं करता है ड्रॉप, both.Set

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // 1 
imageArray = [NSArray arrayWithObjects: 
        [UIImage imageNamed:@"image2.jpg"], 
        [UIImage imageNamed:@"man-actor-Ashton-Kutcher-Wallpaper.jpg"], 
        [UIImage imageNamed:@"image1.jpg"], 
        [UIImage imageNamed:@"man-curl.jpg"], 
        [UIImage imageNamed:@"man-in-suit.jpg"], 
        nil]; 


    for (int i = 0; i < imageArray.count; i++) { 
    CGRect frame; 
    frame.origin.x = self.scrollView.frame.size.width * i; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 

    UIImageView *subview = [[UIImageView alloc] initWithFrame:frame]; 
    subview.image = [imageArray objectAtIndex:i]; 
    subview.contentMode = UIViewContentModeScaleAspectFit; 
    [self.scrollView addSubview:subview]; 
    } 

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * imageArray.count, self.scrollView.frame.size.height); 
    pageControl.numberOfPages = imageArray.count; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)sender { 
    // Update the page when more than 50% of the previous/next page is visible 
    CGFloat pageWidth = self.scrollView.frame.size.width; 
    int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    self.pageControl.currentPage = page; 
} 
संबंधित मुद्दे