iOS— UIScrollView和 UIPageControl之间的那些事

本代码主要实现在固定的位置滑动图片可以切换。

目录图如下:

ViewController.h

#import <UIKit/UIKit.h>
// 通过宏定义定义宽和高
#define WIDTH self.view.frame.size.width
#define HEIGHT self.view.frame.size.height

@interface ViewController : UIViewController<UIScrollViewDelegate>

@property(strong,nonatomic) UIScrollView *myScrollView;
@property(strong,nonatomic) UIPageControl *myPageControl;
// 储存图片的集合
@property(strong,nonatomic)NSMutableArray *imageArray;

// 储存照片
@property(strong,nonatomic)UIImageView *firstimage;
@property(strong,nonatomic) UIImageView *secondimage;
@property(strong,nonatomic) UIImageView *thirimage;
// 当前页码
@property(assign,nonatomic)int currentPage;

@end

ViewController.m

  1 #import "ViewController.h"
  2
  3 @interface ViewController ()
  4
  5 @end
  6
  7 @implementation ViewController
  8
  9 - (void)viewDidLoad {
 10     [super viewDidLoad];
 11     self.myScrollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
 12     self.myScrollView.backgroundColor=[UIColor colorWithRed:0.315 green:0.843 blue:0.892 alpha:1.000];
 13     self.myScrollView.contentSize=CGSizeMake(3*WIDTH, HEIGHT);
 14     // 设置分页
 15     self.myScrollView.pagingEnabled=YES;
 16     //  隐藏滚动条
 17     self.myScrollView.showsHorizontalScrollIndicator=NO;
 18     // 锁定滚动方向
 19     self.myScrollView.directionalLockEnabled=YES;
 20     // 引用代理
 21     self.myScrollView.delegate=self;
 22
 23     [self.view addSubview:self.myScrollView];
 24
 25     self.myPageControl=[[UIPageControl alloc] init];
 26     CGSize PageSize=CGSizeMake(120, 40);
 27     self.myPageControl.frame=CGRectMake((WIDTH-PageSize.width)/2, HEIGHT-PageSize.height-40, PageSize.width, PageSize.height);
 28     self.myPageControl.backgroundColor=[UIColor clearColor];
 29
 30     // 设置当前页
 31     self.myPageControl.currentPage=0;
 32     // 分页
 33     self.myPageControl.numberOfPages=4;
 34
 35     [self.view addSubview:self.myPageControl];
 36
 37     //  初始化储存图片的集合
 38     self.imageArray=[NSMutableArray arrayWithCapacity:1];
 39     for (int i=1; i<5; i++) {
 40         UIImage *image=[UIImage imageNamed:[NSString stringWithFormat:@"%d",i]];
 41         [self.imageArray addObject:image];
 42     }
 43
 44     self.firstimage =[[UIImageView alloc] init];
 45     self.secondimage=[[UIImageView alloc] init];
 46     self.thirimage =[[UIImageView alloc] init];
 47     //  当前页码
 48     self.currentPage=0;
 49
 50     [self reloadImage];
 51
 52 }
 53
 54 -(void)reloadImage
 55 {
 56     // 第一种情况, 第一页
 57     if (self.currentPage==0) {
 58         self.firstimage.image=[self.imageArray lastObject];
 59         self.secondimage.image=[self.imageArray objectAtIndex:self.currentPage];
 60         self.thirimage.image=[self.imageArray objectAtIndex:self.currentPage+1];
 61
 62     }
 63
 64     // 第二种情况,最后一页
 65     else if (self.currentPage==self.imageArray.count-1){
 66         self.firstimage.image=[self.imageArray objectAtIndex:self.currentPage-1];
 67         self.secondimage.image=[self.imageArray objectAtIndex:self.currentPage];
 68         self.thirimage.image=[self.imageArray objectAtIndex:0];
 69
 70     }
 71
 72     // 第三种情况  中间页
 73     else{
 74         self.firstimage.image=[self.imageArray objectAtIndex:self.currentPage-1];
 75         self.secondimage.image=[self.imageArray objectAtIndex:self.currentPage];
 76         self.thirimage.image=[self.imageArray objectAtIndex:self.currentPage+1];
 77     }
 78
 79     self.firstimage.frame=CGRectMake(0, 0, WIDTH, HEIGHT);
 80     self.secondimage.frame=CGRectMake(WIDTH, 0, WIDTH, HEIGHT);
 81     self.thirimage.frame=CGRectMake(WIDTH*2, 0, WIDTH, HEIGHT);
 82
 83     [self.myScrollView addSubview:self.firstimage];
 84     [self.myScrollView addSubview:self.secondimage];
 85     [self.myScrollView addSubview:self.thirimage];
 86
 87     self.myScrollView.contentOffset=CGPointMake(WIDTH, 0);
 88 }
 89
 90 #pragma mark   scrollView  Delegate
 91 //在滚动结束状态转换
 92 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
 93 {
 94     float x=self.myScrollView.contentOffset.x;
 95
 96     // 向左
 97     if (x<0||x==0) {
 98         if (self.currentPage==0) {
 99             self.currentPage=(int)self.imageArray.count-1;
100         }else{
101             self.currentPage--;
102         }
103     }
104
105     // 向右
106     if (x>2*WIDTH||x==2*WIDTH) {
107         if (self.currentPage==(int)self.imageArray.count-1) {
108             self.currentPage=0;
109         }else{
110             self.currentPage++;
111         }
112     }
113
114     self.myPageControl.currentPage=self.currentPage;
115     [self reloadImage];
116 }

时间: 2024-08-24 22:59:53

iOS— UIScrollView和 UIPageControl之间的那些事的相关文章

iOS基础——通过案例学知识之LaunchScreen、APPIcon、StatusBar、UIScrollView、UIPageControl

iOS基础--通过案例学知识之LaunchScreen.APPIcon.StatusBar.UIScrollView.UIPageControl 今天要实现的案例效果图 一.LaunchScreen 1.设置程序的LaunchScreen 在项目配置文件中配置启动页,并且在LaunchScreen.storyboard中进行布局 2.设置LaunchScreen时间 //单位:秒 [NSThread sleepForTimeInterval:1.5f]; 二.APPIcon 1.命名规则:iOS

[iOS]通过UIScrollView和UIPageControl实现滑动切换的效果

UIPageControl是自带的控件,可以查看官方文档,下载官方示例学习. 如果对Xcode自带的文档不熟悉可以参见:苹果Xcode帮助文档阅读指南 接下来是我学习笔记,使用Storyboard实现滑动切换的效果. ----------------------------------------------------------------------------- 新建一个项目,拖上一个UIScrollView和UIPageControl,并且建立关联: 新建一个ContentViewCo

IOS 之 UIScrollView,UIPageControl

UIScrollView 可以用于显示多于一个屏幕的内容,超出屏幕范围的内容可以通过滑动进行查看,UIPageControl 类提供一行点来指示当前显示的是多页面视图的哪一页. 下面实现一个简单的图片自动播放器为例说说 UIScrollView 与 UIPageControl类中的一些方法. 注意:下述代码中的 scrollY,kScreenWidth,kScreenHeight,kImgCount 等都是定义好的常量 #define kScreenHeight [UIScreen mainSc

UIScrollview 与 Autolayout 的那点事

原文  http://www.cocoachina.com/ios/20151221/14757.html 前言 自从写了 介绍Masonry 那篇文章以后 就一直有人对UIScrollView的那个例子不是很理解 UIView *container = [UIView new]; [scrollView addSubview:container]; [container mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.e

ios俩个APP之间跳转、传值

两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个APP的url地址 3.需要跳转的时候 NSString *urlString = [NSString stringWithFormat:@"AppJumpSecond://%@",textField.text]; [[UIApplication sharedApplication] open

UIScrollView和UIPageControl

UIScrollView和UIPageControl 一般配合使用 //创建一个滑动/滚动的视图,大小和当前视图大小一样(可以自定义大小)    UIScrollView *scrollView=[[UIScrollView alloc] initWithFrame:self.view.bounds];    //设置显示内容区域的大小,宽度是当前视图的6倍(可以自定义大小),    scrollView.contentSize=CGSizeMake(self.view.frame.size.w

ios如何实现应用之间的跳转

ios开发时 应用之间的跳转非常常用,比如 在一些购物类app上 直接跳转到支付宝app进行付款,比如 微信分享给好友 或者 朋友圈,可以跳转到微信不同的界面等,应用场景很多,就不一一赘述,那么如何实现应用之间的跳转呢? - (IBAction)skipToWechat { [self openURLWithString:@"wechat://"];} - (IBAction)skipToTimeline { [self openURLWithString:@"wechat:

iOS上架ipa上传问题那些事

iOS上架ipa上传问题那些事 原文: http://www.jianshu.com/p/1e22543285c2 字数513 阅读312 评论0 喜欢1 通过xcode直接打包上传,不会提示你的ipa文件有没有错误,只会提示上传成功与否,但在iTunesStore里构建版本的时候并不能看到上传的ipa版本,因为xcode上传并不会检测ipa文件的可用性.解决办法:使用Application Loader(以下简称AppLoader)上传. 注意: 1.iOS9版本的ipa即使用Xcode7生成

ios两个app之间跳转,传值的实现

两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个APP的url地址 3.需要跳转的时候 NSString *urlString = [NSString stringWithFormat:@"AppJumpSecond://%@",textField.text]; [[UIApplication sharedApplication] open