本章实现效果一:

核心代码:

#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.navigationItem.title = @"滚动视图";[self createScrollView];
}/***  滚动视图只是将比它大的UIImageView视图,通过拖拽效果,将UIImageView上的图片信息完整的展示给用户*  为了让滚动效果明显,添加图片视图的宽或者高至少比滚动视图的宽高多一个像素*/
- (void)createScrollView {//创建对象UIScrollView * scrollView = [[UIScrollView alloc] init];//显示位置scrollView.frame = CGRectMake(10, 70, self.view.bounds.size.width-20, 400);//添加背景颜色scrollView.backgroundColor = [UIColor orangeColor];//添加UIImageViewUIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 600, 500)];imageView.image = [UIImage imageNamed:@"timg.jpg"];[scrollView addSubview:imageView];//设置滚动视图的滚动范围, 内容视图的大小scrollView.contentSize = imageView.frame.size;//关闭自动调节显示位置的属性self.automaticallyAdjustsScrollViewInsets = NO;//关闭边框回弹效果scrollView.bounces = NO;//隐藏滚动条scrollView.showsHorizontalScrollIndicator = NO;scrollView.showsVerticalScrollIndicator = NO;//设置内容视图的偏移位置,默认内容视图显示在滚动视图区域的坐标是在内容视图的(0,0)点位置scrollView.contentOffset = CGPointMake(200, 100);//设置滚动视图的内容视图的缩放效果scrollView.delegate = self;//设置缩放的倍数scrollView.minimumZoomScale = 1.0;scrollView.maximumZoomScale = 3.0;[self.view addSubview:scrollView];
}#pragma mark - UIScrollViewDelegate
/***  最常用的协议方法,没有时间点反复调用,当滚动视图滚动时,一直调用*/
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {NSLog(@"x = %f_____y = %f",scrollView.contentOffset.x,scrollView.contentOffset.y);
}/***  设置滚动视图的缩放效果*/
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{return [[scrollView subviews] objectAtIndex:0];
}/***  滚动视图拖拽开始调用该方法*/
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {//获取的是该方法的名称NSLog(@"%@",NSStringFromSelector(_cmd));
}/***  滚动视图拖拽结束调用该方法*  不能在该方法中获取最终滚动视图停止内容视图的偏移位置的值,也就是contentoffSet的值*  因为滚动视图拖拽结束的时候,还要经历一个内容视图缓慢减速停止的方法,应该在减速停止的方法里获取contentoffSet的值*/
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {NSLog(@"%@",NSStringFromSelector(_cmd));
}/***  滚动视图减速停止调用的方法*/
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {NSLog(@"%@",NSStringFromSelector(_cmd));
}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end

本章实现效果二:

核心代码:

#import "ViewController.h"
#import "HTConfig.h"@interface ViewController ()<UIScrollViewDelegate>@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];[self createScrollView];
}- (void)createScrollView {UIScrollView * scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];scrollView.bounces = NO;scrollView.showsHorizontalScrollIndicator = NO;scrollView.contentSize = CGSizeMake(7 * SCREEN_width, SCREEN_height);//设置内容视图初始状态下的偏移位置scrollView.contentOffset = CGPointMake(SCREEN_width, 0);for (int i = 0; i < 7; i++) {UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(SCREEN_width * i, 0, SCREEN_width, SCREEN_height)];if (i == 0) {imageView.image = [UIImage imageNamed:@"5.png"];}else if (i == 6) {imageView.image = [UIImage imageNamed:@"1.png"];}else {imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i]];}[scrollView addSubview:imageView];}scrollView.pagingEnabled = YES;//设置代理scrollView.delegate = self;[self.view addSubview:scrollView];
}#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {if (scrollView.contentOffset.x == 6 * SCREEN_width) {scrollView.contentOffset = CGPointMake(SCREEN_width, 0);} else if (scrollView.contentOffset.x == 0) {scrollView.contentOffset = CGPointMake(5 * SCREEN_width, 0);}
}@end

本章实现效果三:

核心代码:

#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@end@implementation ViewController {UIScrollView * _scrollView;UIPageControl * _pageCtr;
}- (void)viewDidLoad {[super viewDidLoad];self.navigationItem.title = @"分页控件";[self createUI];
}- (void)createUI {self.automaticallyAdjustsScrollViewInsets = NO;[self createScrollView];[self createPageController];
}- (void)createScrollView {_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 70, self.view.bounds.size.width-20, 350)];_scrollView.contentSize = CGSizeMake((self.view.bounds.size.width-20) * 5, 350);_scrollView.backgroundColor = [UIColor cyanColor];for (int i = 0; i < 5; i++) {UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * (self.view.bounds.size.width-20), 0, self.view.bounds.size.width-20, 350)];imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i+1]];[_scrollView addSubview:imageView];}_scrollView.showsHorizontalScrollIndicator = NO;_scrollView.bounces = NO;//分页效果_scrollView.pagingEnabled = YES;//设置代理_scrollView.delegate = self;//缩放比例_scrollView.minimumZoomScale = 1.0;_scrollView.maximumZoomScale = 3.0f;[self.view addSubview:_scrollView];
}- (void)createPageController {//创建分页控件_pageCtr = [[UIPageControl alloc] initWithFrame:CGRectMake(50, 350 - 30, 200, 30)];//背景颜色_pageCtr.backgroundColor = [UIColor blackColor];//设置分页控件的总页数_pageCtr.numberOfPages = 5;//设置初始化分页空间的页码_pageCtr.currentPage = 0;[self.view addSubview:_pageCtr];
}#pragma mark - UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {NSLog(@"%@",[[_scrollView subviews] objectAtIndex:_pageCtr.currentPage]);return [[_scrollView subviews] objectAtIndex:_pageCtr.currentPage];
}//减速停止
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {//获取当前的显示页为第几页int currentNum = _scrollView.contentOffset.x/_scrollView.frame.size.width;//设置当前的显示页码_pageCtr.currentPage = currentNum;
}@end

demo地址

自学iOS开发系列----UI(视图编程入门:UIScrollView)相关推荐

  1. iOS开发系列--网络开发(转)

    iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 66365 阅读, 56 评论, 收藏, 编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微 ...

  2. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook详解

    代码改变世界 Posts - 69, Articles - 0, Comments - 812 Cnblogs Dashboard Login Home Contact Gallery RSS Ken ...

  3. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  4. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如 ...

  5. iOS开发系列–音频播放、录音、视频播放、拍照、视频录制

    iOS开发系列–音频播放.录音.视频播放.拍照.视频录制 - KenshinCui - 博客园 代码改变世界 Posts - 69, Articles - 0, Comments - 1004 Cnb ...

  6. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总,icloudpassbook

    iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总,icloudpassbook --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS ...

  7. iOS开发系列--通知与消息机制

    http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣 ...

  8. iOS开发系列--UITableView全面解析

    iOS开发系列--UITableView全面解析 2014-08-23 23:20 by KenshinCui, 2202 阅读, 18 评论, 收藏,  编辑 --UIKit之UITableView ...

  9. iOS开发系列文章(持续更新……)

    iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...

  10. iOS开发系列–打造自己的“美图秀秀”(上)

    iOS开发系列–打造自己的"美图秀秀"(上) 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两 ...

最新文章

  1. Delphi十进制和十六进制互转 Delphi 自带函数 IntToHex
  2. SAP Spartacus 中,Angular <ng-container>使用的一个例子
  3. 解决虚拟机能ping通宿主机,而宿主机不能ping通虚拟机
  4. qt之旅-1纯手写Qt界面
  5. 深入理解JVM的内存区域划分
  6. 整数分解为若干项之和python_SVD奇异值分解及Python实例
  7. 刷新按钮_处理数据透视表的隐藏选项(四):固定报表刷新前后的列宽和格式...
  8. python 多线程就这么简单(续)
  9. mysql binary-mode=1_Mysql 性能调优 二 1
  10. 7-2 求交错序列前N项和 (10 分)
  11. 电脑网络——QQ、微信可以登录,浏览器打不开的解决方法
  12. 随着无人机将承担更多的作战任务,“AI辅助空战”或将应运而生
  13. Android:H5 通过 URL Scheme 拉起app应用
  14. win10文件夹加密_专业的文件隐藏软件——文件夹隐藏精灵PC软件
  15. python:shapely模块
  16. Zcash中的zk-SNARK statements
  17. 2013年MBA、MPA、MPAcc入学考试综合能力辅导教材
  18. 用endnote9往word中插入参考文献
  19. 哈希表:线性探查法和平方探查法
  20. 基于Netty的聊天系统(三)协议定制----消息篇

热门文章

  1. linux mint 19界面美化,Linux Mint19字体、主题美化
  2. 题8 数据库系统的核心是什么?
  3. tom 猫 android 版本 设计,一种Tom猫的简单实现
  4. 糗事百科成人版段子爬虫实战
  5. 【7gyy】利用F11恢复崩溃系统
  6. 基于SSM高校教室管理系统毕业设计-附源码181523
  7. thinkphp6如何部署在虚拟主机上?
  8. 合成冷色黑暗恐怖魔法师图片的PS教程
  9. 如何实现音视频云服务弱网高可用性-数据篇
  10. Imatest客观测试之信噪比动态范围