您的位置:首页 > 产品设计 > UI/UE

UIScrollView和UIPageControl组合照片浏览滑动效果

2015-10-03 23:02 465 查看
转自:http://blog.csdn.net/conslee/article/details/19072309

如有侵犯,请来信oiken@qq.com



一个朋友去面试,让写一个用UIScrollView和UIPageControl,一激动说需要半个小时,没时间写了,浪费一次面试机会。

会写的几分钟就可以搞定了,方法其实有很多,小弟在这里献丑了,各位大牛莫要嘲笑。

刚好在学习gcd,就用gcd简单实现一下了。有错误的地方各位指点指点:

直接在入口类里面实现了,

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate,UIScrollViewDelegate>

{

NSMutableArray *_mutArrImg;

UIPageControl *_pageControl;

UIScrollView *_scrollView;

}

@property (strong, nonatomic) UIWindow *window;

@end

分别定义NSMutableArray *_mutArrImg、UIPageControl *_pageControl、UIScrollView *_scrollView全局变量。

#import "AppDelegate.h"

@implementation AppDelegate

\\这个方法,我叫它入口方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.

self.window.backgroundColor = [UIColor whiteColor];

_scrollView = [[UIScrollView alloc] initWithFrame:self.window.bounds];

[self.window addSubview:_scrollView];

_scrollView.delegate = self;

_scrollView.contentSize = CGSizeMake(320*4, self.window.frame.size.height);

_scrollView.pagingEnabled = YES;

_mutArrImg = [NSMutableArray arrayWithCapacity:0];

for (int i=0; i<4; i++) {

NSURL *url = [NSURL URLWithString:@"http://pica.nipic.com/2007-12-12/20071212235955316_2.jpg"];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

NSData *imgData = [NSData dataWithContentsOfURL:url];

UIImage *img = [UIImage imageWithData:imgData];

dispatch_sync(dispatch_get_main_queue(), ^{

[_mutArrImg addObject:img];

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(320*i, 0, 320, self.window.frame.size.height)];

imgView.image = img;

[_scrollView addSubview:imgView];

});

});

}

_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 400, 320, 30)];

_pageControl.numberOfPages = 4;

_pageControl.currentPage = 0;

_pageControl.pageIndicatorTintColor = [UIColor redColor];

[self.window addSubview:_pageControl];

[_pageControl addTarget:self action:@selector(actionCotrolPage:) forControlEvents:UIControlEventValueChanged];

[self.window makeKeyAndVisible];

return YES;

}

\\_pageControl绑定的方法,来控制_scrollView的偏移量的

- (IBAction)actionCotrolPage:(id)sender

{

[_scrollView setContentOffset:CGPointMake(_pageControl.currentPage * 320, 0) animated:YES];

}

//​UIScrollView的代理方法

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

_pageControl.currentPage = _scrollView.contentOffset.x/320;

[self actionCotrolPage:pageControl];//确保能准确落在位置上

}.

.

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: