当前位置: 首页 > news >正文

UIScrollView的使用

1.创建对象并初始化:scrollview = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,460)];

2.设置滑动内容大小:scrollview.contentsize = CGSizeMake(320,500);

3.设置滑动内容的边缘:scrollview.contentInset = UIEdgeInsetMake(0,50,50,0);

4. 是否滚动 // scrollView.scrollEnabled = NO;

5. 是否分页 // scrollView.pagingEnabled = YES;

6.是否支持滑动最顶端 // scrollView.scrollsToTop = NO;

7. 是否反弹 // scrollView.bounces = NO;

8.遵循协议,设置代理//<UIScrollViewDelegate>//scrollView.delegate = self;

9.主要的代理方法:

  9.1// 返回一个放大或者缩小的视图 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { }

  9.2// 开始放大或者缩小 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView: (UIView *)view { }

  9.3// 缩放结束时 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { }

  9.4// 视图已经放大或缩小 - (void)scrollViewDidZoom:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScrollToTop"); }

  9.5// 是否支持滑动至顶部 - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView { return YES; }

  9.6// 滑动到顶部时调用该方法 - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScrollToTop"); }

  9.7// scrollView 已经滑动 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScroll"); }

  9.8// scrollView 开始拖动 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { NSLog(@"scrollViewWillBeginDragging"); }

  9.9// scrollView 结束拖动 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { NSLog(@"scrollViewDidEndDragging"); }

  9.10// scrollView 开始减速(以下两个方法注意与以上两个方法加以区别) - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { NSLog(@"scrollViewWillBeginDecelerating"); }

  9.11// scrollview 减速停止 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { NSLog(@"scrollViewDidEndDecelerating"); }

10.scrollView不能滚动的情况:

  10.1contentSize要大于Frame

  10.2scrollView.scrollEnabled = YES;

  10.3由于ios6.0以后自动布局一起的无法滑动:

    在ios6之前,因为Xcode没有Autolayout的机制,所以直接使用scrollView,设置它的contentSize即可正常滚动

    在ios6之后,因为Xcode引入了Autolayout的机制,所以我们设置的contentSize被修改为适合屏幕大小的值,也就是说自适应啦,因此无法滚动,解决方案如下:
      method one:直接去掉scrollView的Autolayout即可,但是这种方式不完美,毕竟Autolayout是官方推荐的,轻易去掉会引起其他问题,因此慎用。
      method two:在viewController中重载 - (void)viewDidAppear:(BOOL)animated 方法,并且设置contentSize
         - (void)viewDidAppear:(BOOL)animated{
                         [super viewDidAppear:animated];
                         self.scrollView.contentSize = self.imageView.image.size;
                         self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
                     }
  10.4tableView和scrollView滚动起冲突,tableview不能滚动,tableView也是继承的scrollView,所以在滚动的时候也会触发scrollView的代理方法,在scrollViewDidScroll中做一下类型判断就可以了,解决办法如下:
        - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
                       if ([scrollView isKindOfClass:[UITableView class]]) {
                              NSLog(@"------是列表---");
                          }
                          else {
                              NSLog(@"------是滚动试图----");
                          }
                      }

 

转载于:https://www.cnblogs.com/deedeexx/p/5527369.html

相关文章:

  • Python学习路程day17
  • python 学习笔记十七 django深入学习二 form,models
  • 深入介绍信号和槽
  • windows下配置python库
  • 个人工作总结03(第二次冲刺)
  • Centos7下Rinetd安装与应用
  • Python3 捕捉异常
  • GCD 和Timer
  • iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
  • 如何设置电脑的固定IP地址
  • 优质博士的养成之道——对话2015微软学者奖学金获得者
  • 小凡带你搭建本地的光盘yum源
  • Retrofit get post query filed FiledMap
  • ActiveMQ集群应用
  • 拉格朗日插值法
  • (三)从jvm层面了解线程的启动和停止
  • bearychat的java client
  • css布局,左右固定中间自适应实现
  • Effective Java 笔记(一)
  • JavaScript HTML DOM
  • ReactNative开发常用的三方模块
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Twitter赢在开放,三年创造奇迹
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 关于Java中分层中遇到的一些问题
  • 记一次用 NodeJs 实现模拟登录的思路
  • 实现菜单下拉伸展折叠效果demo
  • 我建了一个叫Hello World的项目
  • 我看到的前端
  • 项目实战-Api的解决方案
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • scrapy中间件源码分析及常用中间件大全
  • Spring第一个helloWorld
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #etcd#安装时出错
  • ${ }的特别功能
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (接口自动化)Python3操作MySQL数据库
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十一)手动添加用户和文件的特殊权限
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)母版页和相对路径
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net/c# memcached 获取所有缓存键(keys)
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @angular/cli项目构建--http(2)
  • @RequestMapping用法详解
  • @基于大模型的旅游路线推荐方案
  • [ SNOI 2013 ] Quare