一、UIScrollView的属性和代理方法详解

属性:

- (void)viewDidLoad {
[super viewDidLoad];
_scrollView.backgroundColor = [UIColor redColor];
//设置contentSize(必须设置)
_scrollView.contentSize = CGSizeMake(, );
//偏移量
_scrollView.contentOffset = CGPointMake(, );
//contentInset(在原有的基础上调整内容滚动区域的大小)
//_scrollView.contentInset = UIEdgeInsetsMake(-100, 0, 0, 0); //锁定方向(当系统识别滚动方向的时候,会把另外一个方向锁定,如果识别不了,就不锁定方向)
_scrollView.directionalLockEnabled = YES;
//反弹效果(默认为yes)
_scrollView.bounces = YES;
//默认是no,假如是yes并且bounces是yes,甚至如果内容大小小于bounds的时候,允许垂直拖动
_scrollView.alwaysBounceVertical = YES;
//分页(默认no)
_scrollView.pagingEnabled = YES;
//滚动(默认yes允许滚动)
_scrollView.scrollEnabled = YES; //滚动条
//showsHorizontalScrollIndicator默认yes 显示
_scrollView.showsHorizontalScrollIndicator = NO;
//滚动条滚动的范围(垂直滚动条滚动范围上下各缩小50)
_scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(, , , );
//样式
_scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
// Do any additional setup after loading the view, typically from a nib.
}

代理

- (void)viewDidLoad {
[super viewDidLoad];
//创建并添加scrollView
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(, , , )];
[self.view addSubview:scrollView]; scrollView.backgroundColor = [UIColor redColor];
//设置内容视图的大小
scrollView.contentSize = CGSizeMake(, );
//设置内容视图
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(, , , )];
imageView.image = [UIImage imageNamed:@"new_feature_1"];
[scrollView addSubview:imageView]; _imageView = imageView;
//设置代理
scrollView.delegate = self; //[self performSelector:@selector(changeScrollViewContentOffSet:) withObject:scrollView afterDelay:3]; //设置缩放内容视图的缩放比例范围
scrollView.minimumZoomScale = 0.5;
scrollView.maximumZoomScale = 1.5;
//当缩放比例超出范围之后,是否有反弹效果(no:不会超出范围,yes:超出范围之后反弹)
scrollView.bouncesZoom = YES; //属性设置滚动至顶部
//scrollView.scrollsToTop = YES;
// Do any additional setup after loading the view, typically from a nib.
} -(void)changeScrollViewContentOffSet:(UIScrollView *)scrollView{
[scrollView setContentOffset:CGPointMake(, ) animated:YES];
} #if 0
#pragma mark -UIScrollViewDelegate 滚动
//当scrollView滚动的时候,不停调用(可以监听scrollView的contentOffset)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
//NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
//NSLog(@"decelerating:%d",scrollView.decelerating);
//NSLog(@"dragging:%d",scrollView.dragging);
//NSLog(@"tracking:%d",scrollView.tracking);
NSLog(@"%s",__func__);
} //开始拖动的时候调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
//NSLog(@"tracking:%d",scrollView.tracking);
NSLog(@"%s",__func__);
} // called on finger up if the user dragged. velocity is in points/millisecond. targetContentOffset may be changed to adjust where the scroll view comes to rest
//将要结束拖动
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
// NSLog(@"velocity:%@",NSStringFromCGPoint(velocity));
// NSLog(@"targetContentOffset:%@",NSStringFromCGPoint(*targetContentOffset));
//强制设置scrollView的偏移量
//*targetContentOffset = CGPointMake(0, 200);
NSLog(@"%s",__func__);
} // 已经结束拖动
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
//NSLog(@"dragging:%d",scrollView.dragging);
NSLog(@"%s",__func__);
} //将要开始减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
//NSLog(@"decelerating:%d",scrollView.decelerating);
NSLog(@"%s",__func__);
} //减速完成(停止)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//NSLog(@"contentOffset:%@",NSStringFromCGPoint(scrollView.contentOffset));
NSLog(@"%s",__func__);
} // called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
NSLog(@"%s",__func__);
}
#endif
#pragma mark -UIScrollViewDelegate(缩放)
//指定缩放视图
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
NSLog(@"%s,zooming:%d",__func__,scrollView.zooming);
return _imageView;
}
//缩放之前调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view {
NSLog(@"%s,zooming:%d",__func__,scrollView.zooming);
}
//完成缩放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale{
NSLog(@"%s,zooming:%d",__func__,scrollView.zooming);
}
//缩放时调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"%s,zooming:%d",__func__,scrollView.zooming);
} #pragma mark -UIScrollViewDelegate(滚动至顶部)
//允许滚动至顶部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
return YES;
} //已经滚动至顶部
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
NSLog(@"加载新数据,刷新界面");
}

一、UIScrollView的重要的三大属性contentSize、contentInset、contentOffset

重要说明

(1)UIScrollView的frame与contentsize属性的区分:UIScrollView的frame指的是这个scrollview的可视范围(可看见的区域),contentsize是其滚动范围。

(2)contentinset(不带*号的一般不是结构体就是枚举),为UIScrollView增加额外的滚动区域。(上,左,下,右)逆时针。contentinset可以使用代码或者是视图控制器进行设置,但两者有区别(注意区分)。

(3)contentsize属性只能使用代码设置。

(4)contentoffset是个CGpoint类型的结构体,用来记录ScrollView的滚动位置,即记录着“框”跑到了哪里。知道了这个属性,就知道了其位置,可以通过设置这个属性来控制这个“框”的移动。

iOS - UIScrollView 相关属性代理详解的更多相关文章

  1. iOS回顾笔记(04) -- UIScrollView的基本使用详解

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  2. iOS 视图控制器转场详解

    iOS 视图控制器转场详解 前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标有了大幅度的增长,多谢唐巧前辈的推荐.有些人问我相关的问题 ...

  3. iOS中MVC等设计模式详解

    iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...

  4. 《iOS 7 应用开发实战详解》

    <iOS 7 应用开发实战详解> 基本信息 作者: 朱元波    管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...

  5. ARC声明属性关键字详解(strong,weak,unsafe_unretained,copy)

    ARC声明属性关键字详解(strong,weak,unsafe_unretained,copy) 在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了, ...

  6. iOS百度地图简单使用详解

    iOS百度地图简单使用详解 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰 ...

  7. iOS 开发之照片框架详解(2)

    一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...

  8. iOS 6分享列表——UIActivityViewController详解

    iOS 6分享列表——UIActivityViewController详解 2013-06-03 01:42:33     发表评论 在iOS 6之后提供了一个分享列表视图,它通过UIActivity ...

  9. iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)

    本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...

随机推荐

  1. 用python读取stata文件及写入and注意事项

    读取: 由于stata没有专门模块,是从pandas里面调用,官方文档少之又少,故去查看源代码 #!/usr/bin/env python# -*- coding:utf-8 -*- from pan ...

  2. android 8 wifi 信号等级

    wifi信号等级 /frameworks/base/wifi/java/android/net/wifi/wifimanager.java calculateSignalLevel为计算信号等级函数, ...

  3. 如何在集群中获得处理本次请求的web容器的端口号?

    系统四台机器,每台机器部署四个Tomcat Web容器.现需要根据端口号随机切换到映射的数据源,若一台机器一个Tomcat则用IP识别,可现在一台机器四个Tomcat,因此还需要获得Web容器的端口号 ...

  4. PolymiRTS 数据库- miRNA SNP数据库

    背景: miRNA通过和mRNA的3'UTR区结合,导致mRNA讲解或者抑制mRNA翻译,从而实现转录后调控的作用: 如果在miRNA和 mRNA的结合区域,发生了snp,就可能会影响miRNA和mR ...

  5. 谈谈Android NDK中动态链接库(.so文件)的优化

    做了不少NDK相关的工作,不知道别人有没有同样的困惑,经常在编译C/C++代码的时候会出一些error或者warning,然后在网上搜,发现在Android.mk或者Application.mk文件中 ...

  6. scp 链接文件的问题 + tar

    将本地的文件上传到服务器上,希望保持相对链接关系.(链接文件和被链接文件都在同一的目录下) 使用scp进行传输时,链接关系不会保存,所以需要解决下.(当然可以使用rsync或tar解决,但是rsync ...

  7. PHP框架 Yii framework 用yiic命令时提示“php.exe”不是内部或外部命令

    解决方案 yii/framework/yiic.bat,修改 if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exei ...

  8. ./configure、make、make install 命令

    https://www.cnblogs.com/tinywan/p/7230039.html https://www.sohu.com/a/191735643_505857 ./configure 该 ...

  9. Java动态代理和静态代理区别

    静态代理 package staticproxy; /** * 接口 * @author newtouch * */ public interface IHello { public void say ...

  10. python缓存装饰器,第二种方式(二)

    来个简单的装饰器 def cached_method_result(fun): """方法的结果缓存装饰器""" @wraps(fun) d ...