亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS bounds學習筆記以及仿寫UIScrollView部分功能詳解

2020-07-26 02:19:57
字體:
來源:轉載
供稿:網友

經??吹竭@種說法,frame是基于父控件的,bounds是基于自身坐標的。然而,這個自身坐標是什么?bounds這個屬性存在的意義是什么呢?bounds的x和y值真的永遠是0嗎?

經過查閱資料,我看到這樣一種說法:一個控件,擁有其展示部分和內容部分。其展示部分是有限大的,固定坐標固定大小,而其內容部分是無限大的。就像一個電視機以及其播放的電影(這個比喻不太恰當,是我強行比喻的),電視機用于放映電影的屏幕(控件的展示部分)是固定位置固定大小的,然而電影的世界(控件的內容部分)是無限大的,我們只能展示這個無限的內容的有限部分。

github上的Demo鏈接

Demo演示bounds

先展示下效果圖

我設置了兩個view,一個是紅色的背景view,紅色view里嵌套了一個小的藍色的view。我給紅色view添加了點擊手勢,點擊紅色view,讓紅色view bounds.origin.y += 5;,并打印bounds的值。結果顯示,bounds的y值確實增加了,而實際效果是,藍色小色塊在不斷移動。

其實,frame設置的是其展示區域,就像電視機的顯示屏。而bounds設置的是其內容區域,就像電視機放映的電影中那個廣闊的世界一樣。對于這部分的理解,我想結合scrollView會更容易些。scrollView的frame設置的僅僅只是scrollView的展示界面,而其滑動區域需要設置contentSize屬性。

- (void)viewDidLoad {  [super viewDidLoad];  // 紅色的背景view  UIView *view = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];  view.backgroundColor = [UIColor redColor];  [self.view addSubview:view];  // 單擊手勢  UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewClick:)];  [tap setNumberOfTouchesRequired:1];  [view addGestureRecognizer:tap];  // 藍色的子view  UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(0, 190, 10, 10)];  subView.backgroundColor = [UIColor blueColor];  [view addSubview:subView];}- (void)viewClick:(UITapGestureRecognizer *)gesture{  // 獲取紅色view  UIView *view = gesture.view;  // 修改bounds的值  CGRect bounds = view.bounds;  bounds.origin.y += 5;  view.bounds = bounds;  // 展示bounds的值  NSLog(@"bounds:%@",NSStringFromCGRect(view.bounds));}

關于修改bounds后,其內容的移動規律,我是這樣理解的。我們都知道,左上角是(0,0),右下角方向移動,x和y都是增加的。而對于bounds,由于一個控件的展示部分被frame固定了,不可以隨意移動。而在上面的例子中,y是自增的,那么控件應該相對于內容部分向下移動才對(設置frame是相對于父控件移動,那么設置bounds就是針對自身的內容區域移動)。而控件是不能移動的,所以能移動的就是內容區域了。內容區域相對控件向相反的方向移動,也就是向上移動了。

仿寫UIScrollView的部分效果

仿寫思路:scrollView的滑動效果,我們可以通過添加滑動手勢實現。scrollView的內容滾動,我們可以通過修改scrollView的bounds來實現。

效果圖

代碼

- (void)viewDidLoad {  [super viewDidLoad];  // 仿scrollView  UIView *myScrollView = [[UIView alloc] initWithFrame:self.view.bounds];  myScrollView.backgroundColor = [UIColor redColor];  [self.view addSubview:myScrollView];  // 滑動手勢  UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGes:)];  [myScrollView addGestureRecognizer:pan];  // scrollView的內容  UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 10, 10)];  blueView.backgroundColor = [UIColor blueColor];  [myScrollView addSubview:blueView];}- (void)panGes:(UIPanGestureRecognizer *)gesture{  UIView *myScrollView = gesture.view;  // 獲取滑動的位移量  CGPoint transPoint = [gesture translationInView:myScrollView];  NSLog(@"%@",NSStringFromCGPoint(transPoint));  // 這里總感覺寫錯了,我腦子笨,有點繞不過來了。頭疼  CGRect bounds = myScrollView.bounds;  bounds.origin.x -= transPoint.x;  bounds.origin.y -= transPoint.y;  myScrollView.bounds = bounds;  // 復位  [gesture setTranslation:CGPointZero inView:myScrollView];}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产清自在天天线| 精品国产欧美一区二区三区成人| 久久久久久久久久久久久久久久久久av| 国产亚洲美女精品久久久| 久久久久久久激情视频| 欧美极品少妇xxxxx| 亚洲欧美日韩在线高清直播| 亚洲国产精品久久久久久| 亚洲乱码av中文一区二区| 色妞一区二区三区| 亚洲国产古装精品网站| 国产日韩在线视频| 欧美激情视频网站| 亚洲人精品午夜在线观看| 亚洲爱爱爱爱爱| 91最新在线免费观看| 国产一区深夜福利| 一本一本久久a久久精品综合小说| 成人免费视频在线观看超级碰| 久久久精品久久久久| 日韩a**中文字幕| 亚洲影视九九影院在线观看| 亚洲天堂av女优| 亚洲精品免费网站| 亚州欧美日韩中文视频| 国产精品爱啪在线线免费观看| 欧美一区二区三区四区在线| 成人黄色网免费| 久久久久久久成人| 国产97在线视频| 国产精品成熟老女人| 精品欧美一区二区三区| 国产精品国产三级国产aⅴ浪潮| 中文字幕日本精品| 日韩欧亚中文在线| 国产精品爽爽ⅴa在线观看| 久久福利视频导航| 欧美成人在线影院| 亚洲欧美国产精品| 自拍视频国产精品| 久久精品视频播放| 另类图片亚洲另类| 亚洲深夜福利视频| 亚洲一区亚洲二区亚洲三区| 免费av在线一区| 精品视频在线播放色网色视频| 国产精品免费观看在线| 欧美大肥婆大肥bbbbb| 不卡av日日日| 欧美丰满片xxx777| 亚洲第一网中文字幕| 欧美国产日韩一区| 欧美一区二区色| 国产精品精品久久久久久| 777777777亚洲妇女| 福利视频第一区| 伊人久久男人天堂| 亚洲91av视频| 欧美一级在线播放| 久久中文精品视频| 精品久久久久久中文字幕一区奶水| 欧美性在线视频| 亚洲2020天天堂在线观看| 日韩在线免费高清视频| 日本高清不卡在线| 久久国产精品久久精品| 欧美激情精品久久久久久变态| 久久99精品久久久久久琪琪| 欧美另类交人妖| 伊人久久综合97精品| 久久久久一本一区二区青青蜜月| 国产偷亚洲偷欧美偷精品| 欧美成年人视频网站欧美| 97国产一区二区精品久久呦| 欧美一区深夜视频| 日韩欧美在线视频观看| 久久99久久99精品中文字幕| 91视频九色网站| 国产精品无av码在线观看| 亚洲伊人一本大道中文字幕| 亚洲精品视频免费| 国产成人免费91av在线| 亚洲尤物视频网| 国产精品白丝jk喷水视频一区| 国产精品私拍pans大尺度在线| 中文字幕在线看视频国产欧美在线看完整| 成人午夜高潮视频| 欧美一级高清免费播放| 欧美日韩国产综合新一区| 国产精品欧美风情| 国产精品久久久久久久7电影| 欧美大全免费观看电视剧大泉洋| 精品亚洲一区二区三区| 亚洲美女性视频| 亚洲欧美成人在线| 精品性高朝久久久久久久| 亚洲毛片在线观看.| 亚洲国产日韩欧美综合久久| 欧美日韩另类字幕中文| 国产三级精品网站| 亚洲欧美激情四射在线日| 久热精品在线视频| 精品偷拍一区二区三区在线看| 亚洲香蕉成人av网站在线观看| 美乳少妇欧美精品| 丝袜美腿亚洲一区二区| 国产精品直播网红| 亚洲免费影视第一页| 成人网中文字幕| 欧美丝袜美女中出在线| 欧美在线欧美在线| 日韩中文字幕在线观看| 69视频在线播放| 九九精品在线视频| 一本色道久久88综合日韩精品| 久久精品国产91精品亚洲| 欧美精品免费在线观看| 亚洲码在线观看| 日韩在线视频国产| 日韩中文字幕在线看| 亚洲欧洲在线播放| 免费不卡欧美自拍视频| 97在线看福利| 亚洲尤物视频网| 中文字幕不卡在线视频极品| 亚洲第一页自拍| 久久精品这里热有精品| 国产一区二区日韩| 国产99在线|中文| 亚洲三级黄色在线观看| 日韩精品免费综合视频在线播放| 成人美女免费网站视频| 日韩亚洲欧美中文高清在线| 欧美日韩激情视频8区| 中文字幕一区二区三区电影| 国产亚洲欧洲高清| 精品视频一区在线视频| 91av在线播放视频| 亚洲精品99999| 久久免费国产视频| 国产乱肥老妇国产一区二| 神马国产精品影院av| 亚洲国产日韩欧美在线动漫| 午夜精品一区二区三区视频免费看| 亚洲欧美制服中文字幕| 26uuu另类亚洲欧美日本老年| 91av在线视频观看| 91老司机精品视频| 亚洲激情小视频| 亚洲影院高清在线| 亚洲国产精品一区二区久| 久久精品成人一区二区三区| 在线成人激情黄色| 亚洲最大的av网站| 欧美日韩国产成人高清视频| 在线成人中文字幕| 亚洲午夜精品视频| 欧美孕妇孕交黑巨大网站| 国产精品99久久久久久人| 最近2019中文字幕大全第二页| 伊人久久久久久久久久久久久| 姬川优奈aav一区二区| 欧美午夜精品久久久久久浪潮| 欧美国产精品va在线观看|