02-UIScrollView底层实现

UIScrollView底层实现:修改bounds,就等于UIScrollView的contentOffset偏移量


#import "ViewController.h"

@interface ViewController ()<UIScrollViewDelegate>

@property (nonatomic, weak) UIView *scrollView;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

UIView *scorllView = [[UIView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:scorllView];
    _scrollView = scorllView;
   
    // 添加pan手势
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    [scorllView addGestureRecognizer:pan];
   
    UISwitch *switchView = [[UISwitch alloc] init];
    [scorllView addSubview:switchView];
   
    // 1.UIView 添加一个pan手势
    // 2.手指往上移动,内容往上走,想看下面的内容,bounds.y++
   
}

- (void)pan:(UIPanGestureRecognizer *)pan
{
    // 获取手指偏移量
    CGPoint transP = [pan translationInView:pan.view];
    CGFloat offsetY = -transP.y;
   
    // 修改bounds
    CGRect bounds = _scrollView.bounds;
    bounds.origin.y += offsetY;
    _scrollView.bounds = bounds;
   
    // 复位
    [pan setTranslation:CGPointZero inView:pan.view];
   
   
//    NSLog(@"%f",offsetY);

}

// 只要一滚动就会调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"%@ %@",NSStringFromCGPoint(scrollView.contentOffset),NSStringFromCGRect(scrollView.bounds));

}

//

@end

时间: 2024-12-19 14:28:02

02-UIScrollView底层实现的相关文章

02.网络底层了解

网络概念第一天 两台电脑怎么通过网络传输数据?怎么才能知道传输的是数据?谁摸过网线? OSI七层模型(开放系统互连参考模型)Open System Intercornnect (了解)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型 (了解)物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化,代码转换,数

bounds的深入研究

一.bounds的深入研究 1>frame:是以父控件的左上角为原点,描述的是一块区域的可视范围,    bounds:是以自己内容左上角为原点,描述的是可视范围在内容范围显示的区域 2>frame:参照父控件一直不变 bounds:参照内容,位置会变动 注意:当bounds的y值增加,内容会往上移动!为什么呢?因为y值增加,表示要显示下面的内容,所以内容往上移动了. 3>UIScrollView底层实现: (1)先创建一个UIView,把它添加到控制器的view上 (2)再在这个UIV

java高级⑴

1.之前我们学过 数组: 数组的特点: 01. 长度一旦被定义,不允许被改变 02. 在内存中开辟一连串连续的空间! 那么现在有一个需求: 让我们定义一个数组 来 保存 新闻信息!!! 问题: 01.如果定义一个数组 长度为50 今天的新闻数量只有10条! 那么有40个空间被浪费掉了! 02.今天的新闻数量只有100条! 那么无法存放多余的50条信息! 在程序的运行过程中,我们不知道需要多少个对象的时候,我们首选集合!!! 集合框架! Vector 线程安全的,但是性能低! List Set M

RandomTest03

package com.xdf; import java.util.Random; public class RandomTest03 { /** * Math 算数类 * math.random(); * * Random 随机数的类 * random.nextDouble(); * * between {@code 0.0} and {@code 1.0} * * 返回0.0到1.0之前的数字(浮点数)! 不包含1.0 */ public static void main(String[]

最新大数据24期 共十天高清视频教程 附课件源码

课程目录: 大数据24期-01-JavaSE基础-15天 第一天: 01.什么是计算机软件02.什么数据软件开发--利用编程语言来写剧本03.什么是jdk--怎么安装jdk03.什么是jdk--怎么安装jdk04.安装启动eclipse04.安装启动eclipse05.配置eclipse的字体和布局06.新建一个java的类的步骤07.第一个java编程作品--HelloWorld08.java中的变量定义和变量赋值语法09.第一个java程序中的知识点梳理--终端输入--终端输出10.第二个j

百度刚放假啊数据库风口浪尖萨拉疯了

http://www.ebay.com/cln/l_x5585/2015.02.11/176746639012 http://www.ebay.com/cln/jiacha_boryk/2015.02.11/176837188016 http://www.ebay.com/cln/gbnlin0/2015.02.11/176837189016 http://www.ebay.com/cln/j_j2841/2015.02.11/177066749015 http://www.ebay.com/c

百度房间爱师傅卡卡是快乐疯了;爱死

http://www.ebay.com/cln/shx9479/-/177007606013/2015.02.11 http://www.ebay.com/cln/genqi12/-/176846034010/2015.02.11 http://www.ebay.com/cln/seyyon2/-/176906811016/2015.02.11 http://www.ebay.com/cln/wcn5971/-/176846032010/2015.02.11 http://www.ebay.co

百度和房价是否健康教案上开发

http://www.ebay.com/cln/l.kuan2/-/167247714018/2015.02.10 http://www.ebay.com/cln/setlia-3616/-/167086016019/2015.02.10 http://www.ebay.com/cln/pen-y77/-/167086017019/2015.02.10 http://www.ebay.com/cln/yua-me2/-/167399441016/2015.02.10 http://www.eba

百度电话费健身房拉伸件礼服加拉斯减肥

http://www.ebay.com/cln/cnli_c90nphs5e/-/167379958016/2015.02.07 http://www.ebay.com/cln/gaw4612/-/167226239018/2015.02.07 http://www.ebay.com/cln/re_len4/-/167263594010/2015.02.07 http://www.ebay.com/cln/ta.ku83/-/167162702017/2015.02.07 http://www.