UIScrollView contentInset contentOffset contentSize 详解_jeffasd的博客-程序员宝宝

技术标签: iOS_UI  

//
//  ViewController.m
//  test_UIscrollView_03
//
//  Created by admin on 4/19/16.
//  Copyright  2016 jeffasd. All rights reserved.
//

#import "ViewController.h"

#define VIEW_WIDTH  self.view.frame.size.width
#define VIEW_HEIGHT  self.view.frame.size.height

@interface ViewController () <UIScrollViewDelegate>

@property (nonatomic, strong)UIScrollView *scrollView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    

    [self.view addSubview:self.scrollView];
    
}

- (UIScrollView *)scrollView{
    if (_scrollView == nil) {
        _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, VIEW_WIDTH, VIEW_HEIGHT)];
        
//        _scrollView  = [UIScrollView new];
        
//        _scrollView.backgroundColor = [UIColor cyanColor];
        
        UIView *view = [UIView new];
        
        view.backgroundColor = [UIColor cyanColor];
        
        view.frame = self.view.bounds;
        
        [_scrollView addSubview:view];
        
        _scrollView.delegate = self;
        
        _scrollView.alwaysBounceVertical = YES;
        
        _scrollView.contentInset = UIEdgeInsetsMake(100, 0, 0, 0);
        
        _scrollView.contentSize = CGSizeMake(VIEW_WIDTH, VIEW_HEIGHT);
        
    }
    return _scrollView;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
    NSLog(@"scrollView contentInset is %@", NSStringFromUIEdgeInsets(scrollView.contentInset));
    
    NSLog(@"scrollView contentOffset is %@", NSStringFromCGPoint(scrollView.contentOffset));
    
    NSLog(@"scrollView contentSize is %@", NSStringFromCGSize(scrollView.contentSize));
    
}


//- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
//    
//}

//- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);

//- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

//- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;   // called on finger up as we are moving

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jeffasd/article/details/51192340

智能推荐

阿里java规范手册_阿里巴巴Java开发规范手册_weixin_39921087的博客-程序员宝宝

public static void main(String args[]){//缩进4个空格String say ="hello";//运算符的左右必须有一个空格int flag = 0;//关键词if与括号之间必须有一个空格,括号内f与左括号,1与右括号不需要空格if(flag == 0) {System.out.println(say);}//左大括号前加空格且不换行;左大...

linux ftp不允许匿名登录,ftp服务器不允许匿名登陆_weixin_39920629的博客-程序员宝宝

FTP的安装与配置安装前准备vsftpd是linux下的一款小巧轻快,安全易用的FTP服务器软件,是一款在各个Linux发行版中最受推崇的FTP服务器软件。1.安装vsftpd,直接yum 安装就可以了yum install -y vsftpd出现下图表示安装成功。2.相关配置文件:cd /etc/vsftpd/etc/vsftpd/vsftpd.conf//主配置文件,核心配置文件/etc/v...

iOS大头针(自定义大头针,定位,画线)_牛宏华的博客-程序员宝宝

//自定义大头针 #import #import @interface MyAnn :NSObject MKAnnotation>@property (nonatomic,assign)CLLocationCoordinate2D coordinate;@property (nonatomic,copy)N

HTTP协议之缓存控制:no-cache/must-revalidate/no-store_样young的博客-程序员宝宝_"<meta http-equiv=\"cache-control\" content=\"no-c

本文转自:http://hyj1254.iteye.com/blog/1165387客户端从服务器请求数据需要经历如下基本步骤:        1、如果请求命中本地缓存则从本地缓存中获取一个对应资源的&quot;copy&quot;;        2、检查这个&quot;copy&quot;是否fresh,是则直接返回,否则继续向服务器转发请求。        3、服务器接收到请求,然后判断资源是否变更,是则返回新内容,否...

js传值php不跳转,【WEB前端开辟】js不跳转传值php_小小羊羊羊的博客-程序员宝宝

人人都晓得假如JS变量要猎取背景传来的php变量能够这么写:$aaa = '111';?&gt;var aaa =

【数据结构之哈希表(一)】 解决哈希冲突的四种办法(举例推演)_xiaohan_whaleshark的博客-程序员宝宝_hash冲突例子

解决哈希冲突的四种方法导语(一)开放定址法(1)线性探查法(2)线性补偿探查法(3)随机探测(4)二次探查(二)再哈希法(三)链地址法(四)建立公共溢出区结束语导语哈希表是我们在开发中经常使用到的一种数据结构。它的结构也决定了它不可避免地会产生冲突。那么,如何解决哈希冲突呢?我搜索了一些资料,如今结合自己的理解做一个学习记录。我们先给出一个产生哈希冲突的例子:(16、25、3、29、5...

随便推点

Vuex模块化用法 跨模块调用方法_前端李小白的博客-程序员宝宝

跨模块调用state使用rootState调用根state,拿到对应模块下的stateactionFntion({state, commit, rootState}){ console.log(rootState.moduleA.a)}跨模块调用其他模块mutation和actionmoduleA_action({commit}){ commit('moduleB/mutiationFn',{}, {root: true}) dispatch('moduleB/actio

全面解析傅立叶变换(非常详细)_liusandian的博客-程序员宝宝_傅里叶变换表达式

前言第一部分、 DFT第一章、傅立叶变换的由来第二章、实数形式离散傅立叶变换(Real DFT)从头到尾彻底理解傅里叶变换算法、下第三章、复数第四章、复数形式离散傅立叶变换前言:“关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很

利用C语言将数字、字符等数据写入、输出到文本文件中_c语言输出到文件_十八与她的博客-程序员宝宝

最近在调试程序,想把过程中需要查看的数据输出到文件中,因此将简单的小方法分享一下1.首先需要声明一个文件指针变量FILE* fp;2.接下来需要对这个指针变量进行初始化fp = fopen("在这里填写你自己的路径", "这里填写读写方式");现在介绍一下路径填写和C语言中的读写方式:路径示例:"E:/rtklib/rtklib-test1/res.txt"读写方式:r 以只读方式打开文件,但该文件必须存在。r+ 以可读写方式打开文件,但该文件必须存在。rb+ 读写打开一个二进.

(贪心(也可用优先队列))poj3253Fence Repair_余人未至的博客-程序员宝宝

DescriptionFarmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer len

CTPN算法简单解析_葛葛葛立鹏啊的博客-程序员宝宝_ctpn算法

前言今天讲的是CTPN,Detecting Text in Natural Image with Connectionist Text Proposal Network同样无论别人怎么写,我们讲原理力求简单,用最low的话,讲最复杂的原理(吹个牛,别介意),可能讲的并不是那么好但是一定更倾向于我们这儿样的小白。话不多说,开整。算法初识1》算法能干什么?答:识别文本啊,你看他那个名字,就是场景文本检测呗。2》算法有什么优缺点?答:优点:加入了双向LSTM,文本检测效果好,由于使用文本线构造算

144hz和60hz测试软件,关于显示器,60hz与144hz,以个人角度,给大家分享心得…_weixin_39916355的博客-程序员宝宝

该楼层疑似违规已被系统折叠隐藏此楼查看此楼首先,楼主认为 60hz与144hz显示环境,感官差距真的很大!游戏体验提升,是非常明显的。但看到不少萌新,对这种差异持否定态度,在此,我想抛开所谓数据,从实际游戏情况来说明下。情况 1:萌新,144hz显示器,我也在“网吧”体验过,但实际感觉没什么差别。回答:这种影响,在不同水平层次玩家之间差异也是很大的!比如,一个新入玩家,对地形、操作、准心移动,甚...