Sian 发表于 2014-3-31 10:13:17

ios实战开发之UIScrollView图片浏览器

1、效果演示

http://player.youku.com/player.php/sid/XNjkyMzQ2OTQw/v.swf

2、基本说明

2.1 创建一个UIImageView显示背影图片(可选);2.2 创建一个UIScrollView,大小与self.view相等,可以使用storyboard画,设置为当前控制器属性(连线IBOuylet);
2.3 给scrollView添加多张图片,并将这些图片从左到右一字排开(按规律设置x值);
2.4 设置scrollView的展示区域(contentSize)及相关配置,如滑动条是否显示等;
2.5 开启scrollView的pagingEnable功能,使得滑动图片时能自动分页展示;
2.6 添加UIPageControl控件,并设置基本属性(大小、位置、颜色等);
2.7 设置scrollView的代理为当前控制器--让当前控制器遵守相关协议--在当前控制器中实现协议中的相关方法;
2.8 通过监听scrollView滑动,动态修改pageControl中当前页码,使得pageControl与当前图片一一对应;

3、关键代码

SAViewControl.h
//
//SAViewController.h
//UIScrollView
//
//Created by yusian on 14-3-30.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface SAViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@end

SAViewControl.m
//
//SAViewController.m
//UIScrollView
//
//Created by yusian on 14-3-30.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import "SAViewController.h"
#define kCount 9

@interface SAViewController () <UIScrollViewDelegate>
{
    UIPageControl *_pageControl;
}

@end

@implementation SAViewController

- (void)viewDidLoad
{
    ;
   
    // 创建几个临时变量,尽量避免直接赋值写数字,考虑ios6、7的兼容性
    CGFloat height = self.view.frame.size.height;   // view的高度
    CGFloat width = self.view.frame.size.width;   // view的宽度
    CGRect tempF = CGRectMake(0, 0, width, height);
    self.scrollView.frame = tempF;// scrollView的宽高与view保持一致
    CGFloat y = self.scrollView.frame.origin.y;   // scrollView的y值
   
    // 通过一个for循环创建多张图片并加入到scrollView,并将图片从左到右一字排开
    for (int i = 0; i < kCount; i++ ) {
   
      UIImageView *imageView = [ init];    // 创建UIImageView
      ;   // 添加到scrollView
      
      // 图片文件名分别为001~009.jpg,图片位置一字排开,所以宽/高/y值都相等,x值从左到右分别相差一个图片宽度
      NSString *imgName = ;
      imageView.image = ;
      imageView.frame = CGRectMake(width * i, y, width, height);
    }
   
    // 设置scrollView的属性
    self.scrollView.contentSize = CGSizeMake(width * kCount, 0);    //内容总宽度为9张图片宽度和,高度不变
    self.scrollView.showsHorizontalScrollIndicator = NO;    // 不显示横向滑动条
    self.scrollView.pagingEnabled = YES;    // 以一个scrollView展示区域大小自动分块显示,实现翻页效果
    ;   // 将scrollView添加到view
   
    // 页码控件器相关属性(在这里主要展示为页码显示功能)
    _pageControl = [ init];
    ;
   
    _pageControl.center = CGPointMake(width *0.5, height - 20);   // 位置
    _pageControl.bounds = CGRectMake(0, 0, width, 20);      // 大小
    _pageControl.numberOfPages = kCount;    // 页数
    _pageControl.currentPageIndicatorTintColor = ;    // 当前页高亮颜色
    _pageControl.enabled = NO;// 关掉相关控制功能,只显示效果
   
    self.scrollView.delegate = self;
    // 设置scrollView的代理为当前控制器(SAViewController),当前控制器需要满足以下条件
    //1、遵守UIScrollViewDelegate协议
    //2、实现监听scrollView的某些方法,比如缩放、滚动等动作
}

// 监听滚动时的事件
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // 滚动scrollView时取contentOffset属性,通过计算可以得到当处于第几张图片
    int currentPage = self.scrollView.contentOffset.x / self.scrollView.frame.size.width;
    // 将该值赋值给pageControl的currentPage属性,可实现动态显示当前页码
    _pageControl.currentPage = currentPage;
}

@end

4、源代码下载
下载链接:**** Hidden Message *****

5、参考链接
ios实战开发之xib基本介绍


tomios 发表于 2014-12-12 14:11:42

站长费心了,这么详细的教程,让新手很方便

lihaitao 发表于 2015-1-9 16:19:13

这个源码的链接貌似有点儿问题啊。。。

Miul 发表于 2015-6-15 16:11:19

这个功能非常实用

Sian 发表于 2015-6-15 17:53:22

lihaitao 发表于 2015-1-9 16:19
这个源码的链接貌似有点儿问题啊。。。

有什么问题?
页: [1]
查看完整版本: ios实战开发之UIScrollView图片浏览器