在 Iphone 中使用页面控制滑动图像

Posted

技术标签:

【中文标题】在 Iphone 中使用页面控制滑动图像【英文标题】:Swiping Images with Page Control in Iphone 【发布时间】:2012-10-25 04:36:43 【问题描述】:

我正在尝试制作练习应用程序,我可以在其中使用页面控件滚动图像。我能够滚动图像并能够包含页面控件。但我面临的问题是我无法将两者联系起来。意思是说当我滚动图像时,页面控件不受影响,而当我更改页面控件时,图像的滚动不受影响。

我已经提到了这个:http://www.iosdevnotes.com/2011/03/uiscrollview-paging/ 用于带有页面控件的滚动。

Viewcontroller.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIScrollViewDelegate>
    UIScrollView *scrollView;
    UIPageControl *pageControl;

    BOOL pageControlBeingUsed;


@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@property (nonatomic, retain) IBOutlet UIPageControl *pageControl;

- (IBAction)changePage;

@end

Viewcontroller.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize scrollView,pageControl;

- (void)scrollViewDidScroll:(UIScrollView *)sender 
    if (!pageControlBeingUsed) 
        // Switch the indicator 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;
    

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
    pageControlBeingUsed = NO;


- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
    pageControlBeingUsed = NO;

- (void)viewDidLoad

    [super viewDidLoad];
    NSArray *images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.jpeg"],[UIImage imageNamed:@"2.jpeg"],[UIImage imageNamed:@"3.jpeg" ], nil];

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * images.count, self.scrollView.frame.size.height);

    for (int i = 0; i < images.count; i++) 
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        UIImageView* imgView = [[UIImageView alloc] init];
        imgView.image = [images objectAtIndex:i];
        imgView.frame = frame;
        [scrollView addSubview:imgView];
    

    self.pageControl.currentPage = 0;
    self.pageControl.numberOfPages = images.count;



- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

- (void)viewDidUnload 
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.scrollView = nil;
    self.pageControl = nil;


- (IBAction)changePage
        // update the scroll view to the appropriate page
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        [self.scrollView scrollRectToVisible:frame animated:YES];
        pageControlBeingUsed = YES;


@end

需要一些指导...谢谢..

【问题讨论】:

【参考方案1】:

从这个教程学习了页面控制和scrollView,写的很清楚,希望对你有帮助http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content

【讨论】:

我按照教程创建了新的练习应用程序,但它仍然无法正常工作...... ***.com/questions/13063303/…【参考方案2】:

检查是否将滚动视图的代理设置为ViewController

您刚刚将 pageControlBeingUsed 设置为 YES 或 NO,并且您还没有在 ViewController 中的任何地方使用它

【讨论】:

在哪里使用它?可以告诉我在哪里使用它吗? 现在更改了代码...在scrollViewDidScroll函数中包含pageControlBeingUsed..仍然没有区别... 是否可以创建循环滑动?....如何使用上面的代码进行循环滑动......你有什么想法吗? @Singapore 你的意思是沿着圆形路径移动你的手指来达到上述目的

以上是关于在 Iphone 中使用页面控制滑动图像的主要内容,如果未能解决你的问题,请参考以下文章

解决:iphone iframe内的页面不能滑动问题

在 iphone 中使用 UIScrollView 滚动图像(第 2 部分)

如何在 iPad/iPhone 中实现 VERTICAL 页面控件

在 iPhone 上的同一 HTML 元素上滑动和平移手势

在 iPhone 上另存为图像

有没有办法在结合页面控制的滚动视图中自动布局图像?