精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS屏幕適配實踐淺談

移動開發
在 iOS 平臺上,蘋果爸爸對適配的支持個人感覺很不人性化,提供了 AutoLayout、sizeClass 等技術,感覺沒有前端類似 flexBox 這樣的技術來得靈活。像是點歪了技能樹,過于重視使用 xib 配置 UI,但很多碼農還是習慣純代碼編程。Cocoa 沒有 css 這樣的純布局文件,導致很多時候我們將布局、UI 和邏輯寫在一起,十分混亂、冗長。

前端開發的屏幕適配其實算是基本功,每個碼農在長期實踐中都有自己的總結。

在 iOS 平臺上,蘋果爸爸對適配的支持個人感覺很不人性化,提供了 AutoLayout、sizeClass 等技術,感覺沒有前端類似 flexBox 這樣的技術來得靈活。像是點歪了技能樹,過于重視使用 xib 配置 UI,但很多碼農還是習慣純代碼編程。Cocoa 沒有 css 這樣的純布局文件,導致很多時候我們將布局、UI 和邏輯寫在一起,十分混亂、冗長。

下面簡單介紹下在實踐中適配屏幕的方向思路,拋磚引玉。

從設計到代碼:溝通與標準

App 的 UI 界面是由設計人員(產品,UI)繪制的,然后由開發實現,雙方要有良好的溝通,并且把設計內容標準化、文檔化。

對設計方來說,適配的規則總是在設計師心中的,是按比例的縮放,還是固定的間距,是公用一套規則,還是在大屏下有特殊的布局,都需要有明確方式傳達給耿直的碼農們。

iOS屏幕適配實踐淺談

 

一般常見的布局方式有:

  • 固定間距:在不同尺寸下,間距總是固定。
  • 流式布局:文字,圖片等在不同屏幕下流式排布,比如大屏下一行顯示四張圖片,小屏一行三張,圖片尺寸固定。
  • 比例放大:間距,文字大小,圖片大小等比例放大。
  • 保持比值:兩個UI元素或者圖片的長寬等屬性保持一定的比值。
  • 對齊:元素間按某個方向對齊。

設計師需要將這些布局規則標注清楚,有利溝通,也方便日后追溯。

對于一些通用 UI 組件,要進行標準化,設計上有利于 App 風格統一,實現上也方便開發進行封裝。

iOS屏幕適配實踐淺談

UI 的搭建:xib VS 純代碼

蘋果一直用 xib 來標榜他們家 App 開發簡單易上手:將各種你需要的東西往屏幕上一拖一放,一個 UI 界面就搞定了,這很 cool 不是嘛!

Xib 的優點顯而易見:

  • 易上手、可視化,所見即所得
  • 減少代碼量
  • 快,適合小 App 快速開發

但是在我們的實際項目中,是不推薦使用 xib 的。

首先,xib 本身過于笨拙,只能搭建一些簡單的 UI,動態性很差,難以滿足 App 復雜的 UI 交互需求。

其次,做過性能優化的同學都知道,xib(or StoryBoard)的性能是很差的,相對于用純代碼 alloc 的組件來說,xib 加載慢,而且會占用 App 包的體積。不僅僅是 App 的性能,使用老 mac 打開較大的 xib 文件,有時候會卡的你懷疑人生,嚴重影響開發效率(心情)。

除此以外,對于團隊協作來說,xib 也不是一個好選項:閱讀困難,無法在 git 上查看歷史改動,容易造成沖突,造成沖突后難以解決,元素通過 outlets 與代碼的鏈接難以維護,容易在改動中造成錯漏等等。

另外,對于我這種中途轉到前端的工程師來說,對一切在 IDE 界面上配置的東西都有種迷之不信任,感覺不如一行行黑底白字的代碼來的靠譜。

當然我們不是完全禁用了 xib,用代碼碼 UI 的缺點也很明顯:繁瑣,代碼量大。因此對一些元素較多,又比較固定的 UI 組件,我們可以用 xib 來減少代碼量:

iOS屏幕適配實踐淺談

針對UI代碼繁瑣,重復編碼多的情況,我們可以通過適當封裝(UI 工廠類),組織結構(MVC,分離 UI 代碼)等手段,清晰邏輯。

 

  1. // label 工廠方法 
  2. + (UILabel *)labelWithFont:(UIFont *)font 
  3.                      color:(UIColor *) 
  4.                       text:(NSString *)text 
  5.              attributeText:(NSAttributeString *)attributeText 
  6.                  alignment:(NSTextAlignment)alignment; 

布局:返璞歸真

從 iOS7 開始蘋果在 Cocoa 平臺引入 AutoLayout 進行 UI 的基本布局。但是 AutoLayout 非常反人類,不僅代碼繁瑣而且使用不靈活限制很多。

比如我想要把三個元素等間距地展示在屏幕上,用 AutoLayout 寫完基本蛋都碎了,更別說動態地在兩套布局間切換這種高級需求。

后來蘋果推出 sizeClass,試圖解決多套布局的問題,但是仍然沒有觸及到碼農的痛點,而且依賴 xib 使它泛用性不好。

iOS屏幕適配實踐淺談

一段典型的 AutoLayout 代碼如下所示:

 

  1. _topViewTopPositionConstraint = [NSLayoutConstraint 
  2.                                     constraintWithItem:_topInfoView 
  3.                                     attribute:NSLayoutAttributeTop 
  4.                                     relatedBy:NSLayoutRelationEqual 
  5.                                     toItem:self.view 
  6.                                     attribute:NSLayoutAttributeTop 
  7.                                     multiplier:1.0 
  8.                                     constant:self.navigationController.navigationBar.frame.size.height + self.navigationController.navigationBar.frame.origin.y]; 
  9.     
  10.    [self.view addConstraint:topViewLeftPositionConstraint]; 
  11.     
  12.    (這里省略上述類似結構*4) 

上面省略了很多代碼,實際上一頁都放不下。它干了什么呢,只是將一個元素緊貼屏幕上邊緣放置。項目中我們會使用三方 AutoLayout 的封裝:PureLayout ,簡化代碼,也有其它實用功能。

AutoLayout 比較適合:

  • 基本的對齊(上下左右對齊,居中對齊等)
  • 固定的布局,固定的間距,動態性不高的頁面
  • 簡單且數量較少的 UI 元素

不擅長:

  • 比例布局
  • 動態性較強的頁面局部
  • 不同屏幕大小比例的適配
  • 復雜的 UI

另外有一點,AutoLayout 對性能是有損耗的,所以對性能有要求的場景,比如列表中的 cell,我們會用代碼計算 frame,提高滑動幀率。

所以在實際工程中,需要來選擇布局方式。

下面是 App 中首頁新聞 Feeds 的布局代碼片段:

 

  1. - (void)layoutSubviews { 
  2.      
  3.     [super layoutSubviews]; 
  4.      
  5.     CGFloat cellWidth = CGRectGetWidth(self.bounds); 
  6.     CGFloat currentY = 0.f; 
  7.      
  8.     // 0.content 
  9.     CGFloat cellHeight = CGRectGetHeight(self.bounds); 
  10.     CGFloat contentHeigth = cellHeight - kCellPaddingHeight; 
  11.     _mainContentView.frame = CGRectMake(0, 0, cellWidth, contentHeigth); 
  12.      
  13.     // 1. topic 
  14.     CGFloat topicLabelWidth = [_topicLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_topicLabel.font} context:nil].size.width; 
  15.      
  16.     CGFloat topicLabelHeight = [@"測高度" boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_topicLabel.font} context:nil].size.height; 
  17.      
  18.     CGFloat topicLogoLeftPadding = 3.f; 
  19.     CGFloat topicLogoWidth = 10.f; 
  20.     CGFloat topicLeftPadding = 13.f; 
  21.      
  22.     _topicView.frame = CGRectMake(topicLeftPadding, currentY + kTopicUpPadding, topicLogoWidth + topicLogoLeftPadding + topicLabelWidth, topicLabelHeight); 
  23.     _topicLogo.frame = CGRectMake(topicLabelWidth + topicLogoLeftPadding, CGRectGetHeight(_topicView.frame) / 2.0 - topicLogoWidth / 2.0, topicLogoWidth, topicLogoWidth); 
  24.     _topicLabel.frame = CGRectMake(0, 0, topicLabelWidth, topicLabelHeight); 
  25.      
  26.     (省略大量代碼……) 
  27.      
  28.     // 10._sourceLabel 
  29.     CGSize sourceSize = [_sourceLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_sourceLabel.font} context:nil].size
  30.      
  31.     _sourceLabel.frame = CGRectMake(kEdgeHorizontalPadding, currentY + kLeadingUpPading, sourceSize.width, sourceSize.height); 

可以看到,為了確定每個元素的位置,我們需要進行大量的計算,代碼可讀性也不好,繁瑣難讀。如果引入動態性,比如不同屏幕字體大小改變,元素大小按比例擴大等,則計算量又要上一個數量級。

動態布局:清晰獨立

UI 界面是動態的,在不同狀態,不同尺寸或者手機的橫豎屏情況下,我們往往需要在多套布局方案中切換,或者對布局進行微調。如果使用 xib 布局的話,可以使用 SizeClass + AutoLayout 的方案;如果是代碼實現的頁面,則沒有官方提供的工具,只能用邏輯去判斷。

一般來說,我們寫復雜的 UI 頁面,需要遵循兩個原則:

  1. UI 布局代碼要清晰:這是最重要的,要一眼就知道在調整那一塊,怎么調整,如果不能,適當拆分,優化命名。
  2. 布局代碼要和業務邏輯獨立:在一些常用設計模式下,我們會將 UI 和數據模型解耦,在 UI 內部,同樣要將交互,配置這些邏輯和布局解耦,獨立出類似前端 css 這樣的純布局文件。

將布局代碼提煉出來,在不同尺寸下調用不同的實現:

 

  1. if (IS_IPHONE_6){   
  2.     self.layout = [MyLayout iPhone6Layout]; 
  3. }else if (IS_IPHONE_6_PLUS){   
  4.     self.layout = [MyLayout iPhone6PlusLayout];  
  5.  
  6. // 實現小屏幕布局 
  7. + (MyLayout *)iPhone6Layout {...} 
  8. // 實現大屏幕布局 
  9. + (MyLayout *)iPhone6PlusLayout {...} 

字體適配:字體集

在開發中我們經常會遇到需要動態設置字體的情況:

  • 不同屏幕尺寸,或者橫豎屏,需要展示不同的字體大小。
  • 為用戶提供了文章調節字體選項。
  • App 的不同語言版本,需要顯示的字體不一樣。

iOS屏幕適配實踐淺談

較為簡單的做法是用宏或者枚舉定義字體參數,針對不同尺寸的屏幕,我們拿到不同的值:

 

  1. #ifdef IPHONE6 
  2. #define kChatFontSize 16.f 
  3. #else IPHONE6Plus 
  4. #define kChatFontSize 18.f 
  5. #endif 

在對一些舊代碼做字體適配擴展的時候,直接修改源碼改動太多,容易混亂,可以采用 runTime 方法 hack Label 等控件的展示,替換原有的 setFont 方法:

 

  1. + (void)load{   
  2.      
  3.     Method newMethod = class_getClassMethod([self class], @selector(mySystemFontOfSize:));   
  4.     Method method = class_getClassMethod([self class], @selector(systemFontOfSize:));   
  5.     method_exchangeImplementations(newMethod, method);   
  6. }   
  7.    
  8. + (UIFont *)mySystemFontOfSize:(CGFloat)fontSize{   
  9.     UIFont *newFont=nil;   
  10.     if (IS_IPHONE_6){   
  11.         newFont = [UIFont adjustFont:fontSize * IPHONE6_INCREMENT];   
  12.     }else if (IS_IPHONE_6_PLUS){   
  13.         newFont = [UIFont adjustFont:fontSize * IPHONE6PLUS_INCREMENT];   
  14.     }else{   
  15.         newFont = [UIFont adjustFont:fontSize];   
  16.     }   
  17.     return newFont;   
  18. }  

以上套路缺點顯而易見:不夠靈活,將邏輯分散,不便于維護,擴展性也不好。

一種比較好的實踐是引入字體集(Font Collection)的概念,什么是字體集呢,我們在用 Keynote 或者 Office 的時候,軟件會提供一些段落樣式,定義了段落、標題、說明等文字的字體,我們可以在不同的段落樣式中切換,來直接改變整個文章的字體風格。

iOS屏幕適配實踐淺談

聽上去和我們的需求是不是很像呢,我們在代碼中也是做類似的事情,將不同場景下的字體定義到一個 Font Collection 中:

 

  1. @protocol XRFontCollectionProtocol <NSObject> 
  2.  
  3. - (UIFont *)bodyFont; // 文章 
  4. - (UIFont *)chatFont; // 聊天 
  5. - (UIFont *)titleFont; // 標題 
  6. - (UIFont *)noteFont; // 說明 
  7. ...... 
  8. @end 

不同的場景,靈活選擇不同的字體集:

 

  1. + (id<XRFontCollectionProtocol>)currentFontCollection {  
  2. #ifdef IS_IPhone6 
  3.     return [self collectionForIPhone6]; 
  4. #elif IS_IPhone6p 
  5.     return [self collectionForIPhone6Plus]; 
  6. #endif 
  7.     return nil; 
  8.  
  9. // set font 
  10. titleLabel.font = [[XRFontManager currentFontCollection] titleFont]; 

適配新的屏幕或者場景,我們只需要簡單地增加一套字體集就好了,可以很方便的管理 App 中的字體樣式,做動態切換也很簡單。

總結來說,用代碼在一個尺寸實現設計稿是比較簡單的,但是要在各種尺寸下忠實反應設計的想法需要合理的代碼設計以及一定的代碼量。

UI 的還原其實也是大前端開發非常重要的部分,作為程序員,往往重視代碼的穩定,業務的正常使用而忽略軟件界面這個同樣重要的用戶體驗因素。設身處地地想,如果設計看到自己精心調配的比例、字體、色號在不同尺寸手機上顯示得歪七倒八,一定會氣的要死吧。

作者是杏仁移動開發工程師,前嵌入式工程師,關注大前端技術新潮流。

責任編輯:未麗燕 來源: 杏仁技術站
相關推薦

2023-11-02 09:42:21

iOS屏幕旋轉

2013-05-22 09:49:36

2021-09-07 10:17:35

iOS多語言適配設計

2022-05-17 09:56:09

Voice Over西瓜視頻開發者

2015-02-05 14:31:45

iPhone適配

2011-04-15 14:37:45

JavaCsv

2011-04-02 09:30:46

JavaIO

2015-11-02 09:49:04

Android屏幕適配官方指導

2016-11-30 18:19:22

REM

2017-07-21 14:00:00

iOSCrashMach異常

2017-07-25 12:40:42

iOSCrash僵尸對象

2016-08-31 09:58:55

JavascriptFlux架構

2011-07-07 11:03:07

iOS MVC Objective-

2011-07-28 10:01:19

IOS 內存優化

2018-10-16 15:08:20

屏幕圖像對象

2009-08-20 09:41:36

2023-06-12 15:43:44

鴻蒙智能家居開發

2010-11-09 10:10:15

移動開發屏幕適配UI設計

2011-08-02 10:50:56

iOS開發 內存緩存

2011-07-28 17:20:55

點贊
收藏

51CTO技術棧公眾號

美女视频一区| 自拍视频在线免费观看| 亚洲国产网站| 亚洲摸下面视频| 九九热99视频| av午夜在线观看| 久久精品欧美一区二区三区不卡 | 中文在线观看av| 欧美福利一区| 国产一区二区三区18| 一本之道在线视频| 欧美xxx性| 樱花影视一区二区| 水蜜桃一区二区| 欧美视频在线观看一区二区三区| 久久久久99| 久久久视频免费观看| 欧美一区二区三区粗大| 国产ts一区| 在线电影院国产精品| 免费成人在线视频网站| 成人福利在线观看视频| 久久久久88色偷偷免费| 国产精品久久国产精品| 这里只有精品免费视频| 宅男噜噜噜66国产日韩在线观看| 久热爱精品视频线路一| 在线观看免费黄色网址| 亚洲精品亚洲人成在线| 日韩一二三区视频| 伊人色在线观看| 三上悠亚激情av一区二区三区| 亚洲精品第1页| 伊人久久大香线蕉午夜av| 四虎成人免费在线| av午夜一区麻豆| 3d动漫啪啪精品一区二区免费| 欧美成人一区二区视频| 亚洲欧美日韩国产一区| 2023亚洲男人天堂| 精品少妇久久久久久888优播| 亚洲成av人片乱码色午夜| 原创国产精品91| 亚洲AV无码国产成人久久| 国产精品极品在线观看| 欧美精品一区男女天堂| 亚洲少妇一区二区| 亚洲三级av| 欧美一级精品大片| 少妇性l交大片7724com| 国产精品视频首页| 日韩视频国产视频| 欧美体内she精高潮| 精品国产18久久久久久二百| 欧美猛男男办公室激情| 亚洲图色中文字幕| 白嫩亚洲一区二区三区| 欧美巨大另类极品videosbest| 欧美成人黄色网址| 亚洲成人高清| 51精品久久久久久久蜜臀| 在线免费看污网站| 日韩一级淫片| 精品国产免费一区二区三区香蕉| 黑人无套内谢中国美女| 国产精品午夜av| 亚洲精品久久久久中文字幕二区 | 九色丨蝌蚪丨成人| 亚洲国产高清福利视频| jizz欧美性20| 欧美日韩国产一区二区三区不卡| 中文字幕欧美日韩精品 | 亚洲福利视频三区| 久久久久久久午夜| 日韩漫画puputoon| 欧美日韩另类国产亚洲欧美一级| 日本亚洲欧洲精品| 亚洲狼人综合网| 精品区在线观看| 国产精品密蕾丝视频下载| 国产一区二区黄| 天天色天天综合| 激情婷婷欧美| 国产91在线播放九色快色| 在线观看你懂的网站| 久久国产尿小便嘘嘘| 亚洲free嫩bbb| 天天躁日日躁狠狠躁伊人| 国产亚洲美州欧州综合国| 午夜啪啪免费视频| 波多野结衣中文在线| 色婷婷av一区二区三区gif| 亚洲欧洲日本精品| 一区二区三区免费在线看| 精品视频久久久久久久| 免费在线观看黄色小视频| 亚洲调教视频在线观看| 国产精品成人一区二区| 国产按摩一区二区三区| 2023国产精品自拍| 国产成年人在线观看| 密臀av在线播放| 欧美日韩一级二级| 一出一进一爽一粗一大视频| 久久伦理在线| 日本高清不卡在线| 性一交一乱一精一晶| 久久久99精品免费观看不卡| 久久这里只有精品8| 影音成人av| 日韩国产欧美精品在线| www深夜成人a√在线| 久久欧美肥婆一二区| 高清免费日韩| 男人天堂久久久| 欧美日在线观看| 国产在线不卡av| 亚洲精品国产偷自在线观看| 国产999在线观看| 欧美 日韩 国产 精品| 成人欧美一区二区三区小说| 亚洲黄色a v| 日本三级久久| 久久久免费电影| 97国产成人无码精品久久久| 国产亚洲制服色| 精品少妇一区二区三区在线| 7777精品| 久久综合九色九九 | 欧美在线观看视频一区二区三区| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 日韩电影在线一区| 91久久久亚洲精品| av在线电影观看| 日韩欧美国产视频| 中文字幕99页| 国产精品v亚洲精品v日韩精品| 成人两性免费视频| 999在线视频| 色999日韩国产欧美一区二区| 97精品人妻一区二区三区蜜桃| 欧美成人一品| 99视频在线| 欧美男男video| 日韩欧美第一区| 日本黄色小说视频| 国产一区二区不卡老阿姨| 午夜精品一区二区在线观看的| 成人勉费视频| 国产亚洲精品久久久久久777| 精产国品一区二区| 国产三级精品视频| 2025韩国理伦片在线观看| 欧美精品色图| 国产欧美一区二区三区久久 | 成人涩涩网站| 久久久亚洲精选| 香蕉视频成人在线| 欧美性xxxxxx| 精品人妻中文无码av在线 | 先锋资源久久| 亚洲最大福利视频网| 四虎影院观看视频在线观看| 欧美xxxx老人做受| 日本少妇毛茸茸高潮| 99国产一区二区三精品乱码| 日韩av播放器| 国产精品99久久精品| 亚洲999一在线观看www| 成人福利影视| 亚洲另类图片色| 伊人久久一区二区| 一区二区三区日韩欧美精品| 50一60岁老妇女毛片| 日本美女一区二区三区| 国产精品av免费| 成人免费直播在线| 国产精品高潮粉嫩av| 国产在线观看av| 亚洲国产精品久久| 国产精品成人无码| 亚洲精品高清视频在线观看| 女同性恋一区二区三区| 青青草伊人久久| 久久久国内精品| 国产91一区| 91精品国产一区二区三区动漫| 在线观看爽视频| 日韩在线视频免费观看| 高h震动喷水双性1v1| 欧美婷婷六月丁香综合色| 毛片a片免费观看| 久久精品人人做人人综合| 一区二区三区四区毛片| 在线视频免费在线观看一区二区| 亚洲狠狠婷婷综合久久久| 日韩欧洲国产| 国产精品久久久久久av福利| 日本天码aⅴ片在线电影网站| 亚洲一区二区久久| 殴美一级特黄aaaaaa| 欧美三区在线观看| 好吊妞视频一区二区三区| 1000部国产精品成人观看| 三上悠亚ssⅰn939无码播放| 国产麻豆精品theporn| 亚洲国产精品毛片av不卡在线| 欧美黄色精品| 亚洲国产一区二区三区在线| 四虎影视精品| 动漫一区二区在线| 色综合一区二区日本韩国亚洲| 91精品国产91久久久久久| av激情在线| 色婷婷久久av| 国产日韩精品在线看| 亚洲国产免费av| 国内毛片毛片毛片毛片| 欧美日韩中文一区| 亚洲欧美偷拍视频| 亚洲 欧美综合在线网络| 成人一级黄色大片| 日本一区二区三区国色天香 | 国产精品久久久久影院色老大 | 苍井空浴缸大战猛男120分钟| 欧美午夜不卡影院在线观看完整版免费| 四虎永久在线精品免费一区二区| 日本成人中文| 波多野结衣久草一区| 国产精品亚洲欧美一级在线| 国产精品丝袜高跟| 亚洲承认视频| 国产成人一区二| 天堂网在线最新版www中文网| 国模精品一区二区三区色天香| 手机在线免费看av| 欧美大片在线看免费观看| 国产在线激情| 欧美精品在线免费观看| 岛国成人毛片| 久久国产色av| 性网站在线观看| 米奇精品一区二区三区在线观看| 黄色免费在线网站| 久久在线视频在线| av黄在线观看| 欧美激情一区二区三级高清视频| 青草视频在线免费直播 | 日韩电影大全网站| 欧美中文字幕在线观看| 另类激情视频| 国产精品久久久久久久久久三级| 最新日韩一区| 91精品久久久久久久久久久久久久| 精品国产黄a∨片高清在线| 国产在线观看精品| 国产视频一区二| 成人av资源| 女同久久另类99精品国产| 欧美激情www| 欧美色网址大全| 熟女视频一区二区三区| 欧美欧美天天天天操| 国产av国片精品| 久久精品卡一| 国产一伦一伦一伦| 国产裸体歌舞团一区二区| 国产精久久久久| 久久人人爽爽爽人久久久| 91中文字幕永久在线| 国产精品美女久久久久久久久 | 阿v免费在线观看| 久久精品色欧美aⅴ一区二区| 日韩av激情| 欧美亚洲午夜视频在线观看| 999国产精品亚洲77777| 亚洲最大成人在线| 清纯唯美亚洲经典中文字幕| 亚洲人成网站在线观看播放| 亚洲天堂免费| 免费无码不卡视频在线观看| 美女久久久精品| 熟女人妻一区二区三区免费看| 91老司机福利 在线| 成人信息集中地| 亚洲国产成人porn| 中文字幕+乱码+中文乱码91| 精品乱码亚洲一区二区不卡| 国产综合视频一区二区三区免费| 久久精品2019中文字幕| 国产高清中文字幕在线| 国产精品免费视频xxxx| 亚洲视频国产| 亚洲一二区在线| 国产欧美日韩综合一区在线播放 | 天堂av一区| 日本10禁啪啪无遮挡免费一区二区| 夜间精品视频| 熟妇人妻va精品中文字幕| 国产精品资源网站| 天天躁夜夜躁狠狠是什么心态| 一区二区成人在线视频| 天天干天天插天天射| 欧美成人性战久久| 午夜视频在线观看免费视频| 97在线看免费观看视频在线观看| 欧美黑粗硬大| 免费亚洲一区二区| 悠悠资源网久久精品| 伊人国产在线视频| 久久久久久久综合色一本| 久久婷婷一区二区| 51精品国自产在线| gogogo高清在线观看免费完整版| 午夜精品在线观看| 日韩中文字幕视频网| 中文字幕色一区二区| 欧美aaa在线| 蜜桃精品一区二区| 精品福利视频导航| 高清毛片aaaaaaaaa片| 欧美另类老女人| 涩涩涩久久久成人精品| 日韩妆和欧美的一区二区| 99riav1国产精品视频| 国产ts在线观看| 亚洲激情欧美激情| 国产精品一区二区黑人巨大 | 少妇高潮一区二区三区喷水| 日韩欧美999| 丝袜视频国产在线播放| 91精品国产99| 欧美日韩大片免费观看| 人人妻人人澡人人爽欧美一区双 | 一级特级黄色片| 午夜欧美在线一二页| 四季av日韩精品一区| 久久久欧美一区二区| 一区二区精彩视频| 97碰在线视频| 成人免费福利片| 国产无套粉嫩白浆内谢| 欧美精品一区二区高清在线观看| 黄页在线观看免费| 国产精品麻豆免费版| 亚洲乱码久久| 30一40一50老女人毛片| 欧美午夜精品久久久久久人妖| 手机福利小视频在线播放| 日韩美女毛茸茸| 免费一区二区| 亚洲欧美久久久久| 亚洲天堂免费在线观看视频| 国产特级aaaaaa大片| 欧美国产视频日韩| 欧美激情久久久久久久久久久| 国内性生活视频| 亚洲国产精品二十页| 一级片免费网站| 成年人精品视频| 爱高潮www亚洲精品| 激情深爱综合网| 久久久久久**毛片大全| 午夜一区二区三区四区| y97精品国产97久久久久久| 免费观看亚洲视频大全| 97超碰在线视| 91亚洲午夜精品久久久久久| 欧美一区免费看| 精品国产自在精品国产浪潮| 亚洲图色一区二区三区| 欧美日韩一道本| 中文字幕一区二区三区四区| va视频在线观看| 91产国在线观看动作片喷水| 欧美三级伦理在线| 特黄特黄一级片| 日韩欧美极品在线观看| 91大神在线网站| 99热最新在线| 日韩va亚洲va欧美va久久| av黄色免费在线观看| 欧美精品一区男女天堂| 国产精品亚洲d| 日韩极品视频在线观看 | 日韩黄色免费观看| 亚洲精品在线不卡| 一区二区三区| 国产亚洲欧美在线视频| 国产精品福利一区二区三区| 手机av在线免费观看| 成人av.网址在线网站| 国产日韩1区| 亚洲欧美小视频| 亚洲一区二区久久久| 亚洲va欧美va人人爽成人影院| 男人女人黄一级| 亚洲成av人综合在线观看| av影片在线看| 免费观看成人在线|