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

iOS 屏幕旋轉的實踐解析

移動開發 iOS
ZEGO RoomKit SDK 目前已經支持屏幕旋轉場景,并且在 2.0.0 版本中以 JSON 配置的形式,支持更靈活更便捷的實現自定義的屏幕旋轉場景。在視頻直播類的 APP 中屏幕旋轉往往是繞不開的一環,梳理清楚以上三個枚舉的含義,以及旋轉方法的調用時機,并在恰當的時間去刷新旋轉后的布局,iOS旋轉適配就不再困難。

屏幕旋轉是在視頻直播類 APP 中常見的場景,在即構科技之前發布的 Roomkit SDK 中也有屏幕跟隨手機自動旋轉的場景。

在 Roomkit SDK 自身開發和客戶接入的過程中我們也會發現,實現屏幕旋轉的需求往往沒有那么順利,經常會出現無法旋轉、旋轉后布局適配等問題。

本篇文章根據我們以往的開發經驗整理了屏幕旋轉實現的相關實踐方法,解析在實現過程中遇到的常見問題。

一、快速實現旋轉

iOS 屏幕旋轉的實現涉及到一堆枚舉值和回調方法,對于沒有做過旋轉相關需求的開發來說,可能一上來就暈了,所以我們先動手,讓屏幕轉起來吧。

實現旋轉的方式主要有兩種,跟隨手機感應旋轉和手動旋轉,接下來對這兩種方式進行逐一介紹。

方式一:跟隨手機感應器旋轉

要實現自動跟隨手機旋轉,首先要讓當前的視圖控制器實現以下三個方法:

/// 是否自動旋轉
- (BOOL)shouldAutorotate {
    return YES;
}

/// 當前 VC支持的屏幕方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft;
}

/// 優先的屏幕方向
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}
-----------------------------------
?著作權歸作者所有:來自51CTO博客作者ZEGO即構的原創作品,請聯系作者獲取轉載授權,否則將追究法律責任
iOS 屏幕旋轉的實踐解析
https://blog.51cto.com/u_14794264/8131290

這種方法需要注意以下幾點:

  • shouldAutorotate 返回 YES 表示跟隨系統旋轉,但是受 supportedInterfaceOrientations 方法的返回值影響,只支持跟隨手機傳感器旋轉到支持的方向。
  • preferredInterfaceOrientationForPresentation 需要返回 supportedInterfaceOrientations中支持的方向,不然會發生 'UIApplicationInvalidInterfaceOrientation'崩潰。

方式二:手動旋轉

這種方式在很多視頻軟件中都很常見,點擊按鈕后旋轉至橫屏。

這時需要在 shouldAutorotate 中返回 yes,然后再在此方法中 UIInterfaceOrientation 傳入你需要旋轉到的方向。注意這是私有方法,是否使用請自行斟酌。

- (void)changeVCToOrientation:(UIInterfaceOrientation)orientation {
    if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
        SEL selector = NSSelectorFromString(@"setOrientation:");
        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
        [invocation setSelector:selector];
        [invocation setTarget:[UIDevice currentDevice]];
        int val = orientation;
        [invocation setArgument:&val atIndex:2];
        [invocation invoke];
    }
}
-----------------------------------
?著作權歸作者所有:來自51CTO博客作者ZEGO即構的原創作品,請聯系作者獲取轉載授權,否則將追究法律責任
iOS 屏幕旋轉的實踐解析
https://blog.51cto.com/u_14794264/8131290

場景應用

自動旋轉

如果你的 iPhone 沒有關閉系統屏幕旋轉,你就能發現系統相冊 APP 的頁面是可以跟著手機轉動方向旋轉的。

如果你想實現和它一樣的效果,只需要按照前面方式一(跟隨手機感應器旋轉)去配置你的視圖控制器的方法,之后控制器就可以在 supportedInterfaceOrientations 返回的方向內實現自由旋轉了。

只能手動旋轉

這種場景比較少見,在視頻直播類 APP 中常見的場景是自動和手動旋轉相結合的方式。

如果你要實現只能通過像點擊按鈕去旋轉的方式,首先需要在 supportedInterfaceOrientations 方法中返回你需要支持的方向,這里重點是shouldAutorotate 方法的返回值。

上面方式二中(手動旋轉)說明了手動旋轉需要 shouldAutorotate 返回 YES,但是這也會讓控制器支持自動旋轉,不符合這個需求,所以我們按以下方法處理:

- (BOOL)shouldAutorotate {
    if (self.isRotationNeeded) {
        return YES;
    } else {
        return NO;
    }
}

屬性 isRotationNeeded 作為是否需要旋轉的標記,isRotationNeeded 默認為 NO,此時就算你旋轉設備,回調 shouldAutorotate 方法時也不會返回 YES,所以屏幕也不會自動旋轉。

剩下的只需要你在點擊旋轉的按鈕后將 isRotationNeeded 置為 YES 并調用手動旋轉的方法,這樣處理后只能手動旋轉的效果就實現了。

二、旋轉后的 UI 布局更新

通常情況下,應用旋轉到橫豎屏后,因為不同的寬高比會有不同 UI,所以在屏幕旋轉的場景中我們又需要解決旋轉后 UI 適配的問題。

手機旋轉時,正常情況下若 shouldAutorotate 返回 YES , 當視圖控制器需要旋轉就會觸發 viewWillTransitionToSize 方法,這樣我們就找到了去更新橫豎屏 UI 的時機了,也就是在 completion block 里去完成旋轉后的適配邏輯。

/*
This method is called when the view controller's view's size is
changed by its parent (i.e. for the root view controller when its window rotates or is resized).

If you override this method, you should either call super to
propagate the change to children or manually forward the 
change to children.
 */
- (void)viewWillTransitionToSize:(CGSize)size
       withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
    
    [coordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {
        //橫屏:size.width > size.height
        //豎屏: size.width < size.height
        NSLog(@"旋轉完成,更新布局");
    
    }];
}
-----------------------------------
?著作權歸作者所有:來自51CTO博客作者ZEGO即構的原創作品,請聯系作者獲取轉載授權,否則將追究法律責任
iOS 屏幕旋轉的實踐解析
https://blog.51cto.com/u_14794264/8131290

三、相關問題

在開發旋轉場景的需求的時候,由于復雜的多級配置和數目繁多的枚舉類型,難免會遇到一些崩潰和無法旋轉的問題,下面我們就來總結一下此類問題。

問題一:無法自動旋轉

首先檢查下系統屏幕旋轉開關是否被鎖定。系統屏幕鎖定開關打開后,應用內無法自動旋轉,但是可以調用上文提到的的方法進行手動旋轉。

問題二:多級屏幕旋轉控制設置錯誤

以下方法都可以設置屏幕旋轉的全局權限:

Device Orientation 屬性配置:“TARGETS > General > Deployment Info > Device Orientation”,圖中是 xcode 默認的配置,值得注意的是 iPhone 不支持旋轉到 Upside Down 方向。

Appdelegate的 supportedInterfaceOrientationsForWindow 方法:

// 返回需要支持的方向
// 如果我們實現了Appdelegate的這一方法,那么我們的App的全局旋轉設置將以這里的為準
- (UIInterfaceOrientationMask)application:(UIApplication *)applicatio supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window {
    return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskPortrait;
}

以上兩種方式優先級:Appdelegate方法 > Target配置,這兩種方式的配置和控制器的 supportedInterfaceOrientations 方法都會影響最終視圖控制器最終支持的方向。

以 iOS 14 中以 present 打開控制器的方式為例,當前控制器最終支持的屏幕方向,取決于上面兩種方式中的優先級最高的方式的值,與控制器 supportedInterfaceOrientations 的交集。

總結起來有以下幾種情況:

如果交集為空,且在控制器的 shouldAutorotate 方法中返回為 YES,則會發生UIApplicationInvalidInterfaceOrientation 的崩潰。

如果交集為空,且在控制器的 shouldAutorotate 方法中返回為 NO,控制器的supportedInterfaceOrientations 方法與 preferredInterfaceOrientationForPresentation 方法返回值不沖突(前者返回值包含有后者返回值),則顯示為控制器配置的方向。

如果交集為空,且在控制器的 shouldAutorotate 方法中返回為 NO,控制器的supportedInterfaceOrientations 方法與 preferredInterfaceOrientationForPresentation 方法返回值沖突(前者返回值未包含有后者返回值),則會發生 UIApplicationInvalidInterfaceOrientation 的崩潰。

如果交集不為空,控制器的 supportedInterfaceOrientations 方法與 preferredInterfaceOrientationForPresentation 方法返回值沖突,則會發生 UIApplicationInvalidInterfaceOrientation 的崩潰。

如果交集不為空,控制器的 supportedInterfaceOrientations 方法與 preferredInterfaceOrientationForPresentation 方法返回值不沖突,當前控制器則根據 shouldAutorotate 返回值決定是否在交集的方向內自動旋轉。

這里建議如果沒有全局配置的需求,就不要變更 Target 屬性配置或實現 Appdelegate 方法,只需在要實現旋轉效果的 ViewController 中按前面所說的方式去實現代碼。

問題三:橫屏時打開系統鎖定屏幕開關,視圖被強制恢復到豎屏

由于 iOS 閉源,蘋果為什么會這樣操作當然我們也無從得知,但是我們可以通過一些手段來規避這個問題。好在產生這樣的旋轉時,系統也會觸發和普通旋轉時一樣的方法調用。

以 iPhone X 為例,當下拉打開控制頁面時,我們會收到 UIApplicationWillResignActiveNotification 的系統通知,收起控制頁面后會收到 UIApplicationDidBecomeActiveNotification 通知,通過這兩個通知來記錄一下狀態,在 shouldAutorotate 通過判斷是否是 Active 狀態 返回 YES/NO。

 (void)setupNotification {
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationWillResignActive:)
                                                 name:UIApplicationWillResignActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationDidBecomeActive:)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];
}

- (BOOL)shouldAutorotate {
    if (!self.isApplicationActive) {
            return NO;
        } else {
            return YES;
        }
    }
}

問題四:屏幕旋轉與 ZegoExpressEngine 的適配

有很多小伙伴已經接入了我們的 ZegoExpressEngine 實時音視頻引擎,那么在旋轉的場景中你就要考慮到旋轉對推拉流的影響,以 RoomKit SDK 的使用場景為例,大致有以下幾種情況:

當前頁面固定一個方向顯示,只需要設置與當前方向符合的視頻分辨率(引擎默認值為 “360 × 640”,根據自己需求確定),再調用引擎的 setAppOrientation 接口設置當前方向,以下代碼以左橫屏方向為例:

ZegoVideoConfig *videoConfig = [[ZegoVideoConfig alloc] init];
// 左橫屏分辨率設置如下:
videoConfig.encodeResolution = CGSizeMake(1280, 720);
[[ZegoExpressEngine sharedEngine] setVideoConfig:videoConfig];
// 調用 setAppOrientation 接口設置視頻的朝向
[[ZegoExpressEngine sharedEngine] setAppOrientation:UIInterfaceOrientationLandscapeLeft];
-----------------------------------
?著作權歸作者所有:來自51CTO博客作者ZEGO即構的原創作品,請聯系作者獲取轉載授權,否則將追究法律責任
iOS 屏幕旋轉的實踐解析
https://blog.51cto.com/u_14794264/8131290

當前頁面有旋轉的場景,這時就需要在旋轉完成后去更新 ZegoExpressEngine 引擎的方向和視頻分辨率,注意這里的當前方向取的是當前狀態欄的方向。

// 根據當前方向設置分辨率
ZegoVideoConfig *videoConfig = [ZegoVideoConfig defaultConfig];
if (isCurPortrait) {
    videoConfig.captureResolution = CGSizeMake(720, 1280);
} else {
    videoConfig.captureResolution = CGSizeMake(1280, 720);
}
// 調用 setAppOrientation 接口設置視頻的朝向
[[ZegoExpressEngine sharedEngine] setAppOrientation:[UIApplication sharedApplication].statusBarOrientation];
-----------------------------------
?著作權歸作者所有:來自51CTO博客作者ZEGO即構的原創作品,請聯系作者獲取轉載授權,否則將追究法律責任
iOS 屏幕旋轉的實踐解析
https://blog.51cto.com/u_14794264/8131290

上面的 ZegoExpressEngine 音視頻引擎屏幕旋轉后的適配邏輯,處理時機都在視圖控制器旋轉完成后,也就是 viewWillTransitionToSize 方法的 completion block 里面,這時拿到的 [UIApplication sharedApplication].statusBarOrientation 方向與當前控制器方向符合。

(更多 ZegoExpressEngine 音視頻引擎屏幕旋轉問題可以參考: iOS 實時音視頻SDK視頻旋轉功能- 開發者中心 - ZEGO即構科技)

四、相關枚舉值

在前面的講述中,我們也認識了一些與屏幕旋轉相關的枚舉值。乍一看這塊內容確實會感覺多得讓人眼花繚亂,但是我們看清楚他們名稱中的關鍵詞如:Device、Interface,并在各個枚舉類型用到的地方去理解它的意思,也是能理清這里面的邏輯的。

1、 設備方向:UIDeviceOrientation

UIDeviceOrientation 是以 home 鍵的位置作為參照,受傳感器影響,和當前屏幕顯示的方向無關,所以只能取值不能設值。

typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
    UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,
    UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
    UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
} API_UNAVAILABLE(tvos);

前面講述的屏幕旋轉方法中不會直接用到這個枚舉,但是如果你有監聽設備當前方向的需求時,它就變得有用了。可以通過 [UIDevice currentDevice].orientation 獲取當前設備的方向,若要監聽設備的方向變化,可以用以下代碼實現:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
 [[NSNotificationCenter defaultCenter] addObserver:observer
                                          selector:@selector(onDeviceOrientationChange:)
                                              name:UIDeviceOrientationDidChangeNotification
                                            object:nil];

2、 頁面方向:UIInterfaceOrientation

UIInterfaceOrientation 是當前視圖控制器的方向,區別于設備方向,它是屏幕正在顯示的方向,preferredInterfaceOrientationForPresentation 方法的返回值就是這個枚舉類型。

/// 優先的屏幕方向
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

注意 UIInterfaceOrientationLandscapeLeft 與 UIDeviceOrientationLandscapeRight 是對應的,這兩個枚舉類型左右相反。

typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
    UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,
    UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
    UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
} API_UNAVAILABLE(tvos);

3、 頁面方向:UIInterfaceOrientationMask

觀察 UIInterfaceOrientationMask 枚舉的值,我們就會發現這是一種為了支持多種 UIInterfaceOrientation 而定義的類型,它用來作為 supportedInterfaceOrientations 方法的返回值,比如我們在該方法中返回 UIInterfaceOrientationMaskAll 就可以支持所有方向了。

/// 當前 VC支持的屏幕方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) {
    UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait),
    UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft),
    UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight),
    UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown),
    UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),
    UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown),
    UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),
} API_UNAVAILABLE(tvos);

五、結語

ZEGO RoomKit SDK 目前已經支持屏幕旋轉場景,并且在 2.0.0 版本中以 JSON 配置的形式,支持更靈活更便捷的實現自定義的屏幕旋轉場景。

在視頻直播類的 APP 中屏幕旋轉往往是繞不開的一環,梳理清楚以上三個枚舉的含義,以及旋轉方法的調用時機,并在恰當的時間去刷新旋轉后的布局,iOS旋轉適配就不再困難。

以上就是關于在 iOS 上實現屏幕旋轉的技術解讀,也歡迎大家使用 RoomKit SDK 體驗 demo

責任編輯:武曉燕 來源: 51CTO博客
相關推薦

2017-11-10 13:02:44

iOSUI代碼

2019-12-26 13:06:07

Windows 10旋轉屏幕Windows

2021-11-15 17:47:07

屏幕切換機制

2019-03-29 13:38:51

Windows 10旋轉屏幕

2011-07-07 11:12:57

iPad iPhone

2017-07-25 09:55:10

iOS橫豎屏旋轉

2022-08-04 18:23:28

屏幕共享卡頓流暢度

2013-04-09 10:03:29

iOS6.0旋轉兼容

2025-06-09 08:31:01

旋轉屏幕ViewModel開發者

2022-03-15 15:26:16

iPhoneProMotion刷新率

2011-07-21 17:05:31

iPhone 屏幕 緩沖

2021-06-28 14:35:36

iOSAPP緩存

2015-09-23 10:14:48

iOS 代碼實踐

2024-11-18 16:15:00

2019-03-25 22:20:39

iOSCharles抓包

2019-03-26 04:47:28

iOSWireshark抓包

2024-08-30 09:53:17

Java 8編程集成

2014-09-17 13:48:16

iOS 8Size Classe

2016-08-23 10:50:50

WebJavascript緩存

2018-08-22 11:31:59

華為云
點贊
收藏

51CTO技術棧公眾號

羞羞在线观看视频| 青青草视频在线免费播放| 中文字幕网址在线| 综合激情婷婷| 亚洲成人精品在线| 国产精品少妇在线视频| 色影院视频在线| 国产一区二区三区免费在线观看 | 日本电影在线观看网站| 国产一区二区三区蝌蚪| 97视频人免费观看| 国产又粗又猛又爽又黄的视频小说| 成人污污www网站免费丝瓜| 亚洲午夜久久久久久久久电影网| 欧美日韩精品久久| 国产黄色一级大片| 视频一区在线视频| 久久大大胆人体| 亚洲av无码成人精品国产| 国产乱子精品一区二区在线观看| 亚洲午夜电影在线| 免费看啪啪网站| 无码国产精品一区二区色情男同 | 国产999视频| 日韩成人毛片视频| 卡通动漫精品一区二区三区| 欧美美女直播网站| 成人免费观看毛片| 黄页网站在线| 亚洲情趣在线观看| 日韩精品一区二区三区丰满| 欧美视频xxx| 国产在线视频一区二区三区| 国产成人精品av在线| 久草视频手机在线观看| 97人人精品| 亚洲人成欧美中文字幕| 亚洲国产精品第一页| 亚洲精品无播放器在线播放| 日本韩国欧美在线| 欧美丰满熟妇bbbbbb百度| aaa大片在线观看| 国产精品私人影院| 欧美日韩综合网| 视频一区二区在线播放| 成人黄页毛片网站| 99re视频在线| 国产富婆一级全黄大片| 精东粉嫩av免费一区二区三区| 日韩免费视频在线观看| 91美女免费看| 99精品热视频只有精品10| 欧美日韩aaaa| 欧美日韩在线观看成人| 亚洲情侣在线| 久久香蕉国产线看观看av| 日韩av网站在线播放| 成人在线电影在线观看视频| 亚洲天堂视频在线观看| 我不卡一区二区| 蜜臀av免费一区二区三区| 日韩精品亚洲元码| 欧美无人区码suv| 日韩动漫一区| 亚洲精品一区二区三区婷婷月| 黄色av网址在线观看| 群体交乱之放荡娇妻一区二区| 精品国产免费久久| 国产伦精品一区二区免费| 久久亚州av| 国产丝袜一区视频在线观看| 美女脱光内衣内裤| 精品黄色一级片| 搡老女人一区二区三区视频tv| 精品丰满少妇一区二区三区| 国产精品97| 欧美日韩国产999| 精品一区免费观看| 欧美一级视频| 国产日韩在线精品av| 99热这里只有精品99| 成人午夜电影网站| 久久亚洲国产精品日日av夜夜| 免费一级毛片在线观看| 中文字幕欧美激情| 黄色a级在线观看| 大香伊人久久| 色婷婷av久久久久久久| 色戒在线免费观看| 波多野结衣欧美| 亚洲精品国产品国语在线| 国产女主播喷水高潮网红在线| 四虎8848精品成人免费网站| 欧美大胆a视频| 久久久久久久久久久久久久av| 日韩国产精品久久久| 亚洲资源在线看| 欧美午夜黄色| 亚洲三级电影网站| 久久久噜噜噜www成人网| 九九久久国产| 亚洲精品美女网站| 疯狂撞击丝袜人妻| 久久av一区| 2020国产精品久久精品不卡| 香蕉视频免费看| 成人欧美一区二区三区黑人麻豆 | 国产在线视频欧美一区二区三区| 九九九伊在人线综合| 亚洲精品videosex极品| 欧美一级片中文字幕| 久久视频社区| 国产一区二区三区毛片| 日本视频www| 麻豆91在线播放| 久久精品成人一区二区三区蜜臀| 国产区在线观看| 一本色道久久综合亚洲精品按摩| 国产九九九视频| 成人三级视频| 欧美有码在线观看视频| 精品国产乱码一区二区三| 国产女主播一区| 色综合久久久久无码专区| 国产精品毛片无码| 伊人久久久久久久久久久| 日本中文字幕网| 国产福利一区在线| 一区二区在线观看网站| 欧美性suv| 日韩成人网免费视频| 久久国产精品波多野结衣| 国产专区综合网| 视频一区三区| 欧美舌奴丨vk视频| 亚洲女同精品视频| 粉嫩aⅴ一区二区三区| 国产乱人伦精品一区二区在线观看| 日韩国产精品一区二区三区| 欧亚av在线| 亚洲国产精品网站| 国产 日韩 欧美 成人| 国产一区二区三区久久悠悠色av| 亚洲一区二区三区加勒比| 欧美va在线| 国产亚洲精品美女| 免费看污视频的网站| 久久在线免费观看| 久久婷婷五月综合色国产香蕉| 久久久久观看| 欧美一区二区三区免费视| 丝袜视频国产在线播放| 婷婷开心久久网| 伦理片一区二区| 黄色成人91| 国产嫩草一区二区三区在线观看| 黄色在线看片| 亚洲国产精品久久久| 国产香蕉在线视频| 成人h动漫精品| 欧美日本视频在线观看| 亚洲资源网站| 国产精品高潮呻吟视频| 77777影视视频在线观看| 在线国产电影不卡| 欧美aaa级片| 韩国理伦片一区二区三区在线播放| 中文字幕久久一区| 久久九九精品视频| 久久久久中文字幕2018| 亚洲欧美自偷自拍| 91精品福利视频| 日本 欧美 国产| 国产精品99久| 国产av麻豆mag剧集| 美女网站一区| 国产伦精品一区二区三区精品视频| 麻豆av在线免费看| 精品久久久久99| 人妻 日韩精品 中文字幕| 国产欧美日韩卡一| 在线观看日本www| 最新亚洲一区| 日韩高清av| 视频一区国产| 情事1991在线| 欧美极品视频| 亚洲韩国青草视频| 国产一级精品毛片| 亚洲精品久久久蜜桃| 大地资源二中文在线影视观看| 秋霞午夜av一区二区三区| 中文字幕在线乱| 亚洲区小说区| 99精品99久久久久久宅男| 国产网站在线| 久久精品国产成人| 色噜噜一区二区三区| 在线看国产日韩| 免费视频一二三区| 中文字幕免费一区| 88av在线播放| 黄网站免费久久| 国产肥臀一区二区福利视频| 99久久99热这里只有精品| 国产精品一区二区免费看| 91精品店在线| 国内精品小视频| 日韩子在线观看| 亚洲美女av黄| 亚洲第一黄色片| 欧美日韩一区 二区 三区 久久精品| 久草视频在线资源站| 国产精品久久毛片| 国产精品一区二区入口九绯色| 国产美女在线观看一区| 老头吃奶性行交视频| 亚洲高清在线| 激情五月五月婷婷| 青青草97国产精品麻豆| 久久久久久一区| 97久久综合精品久久久综合| 国产欧美韩国高清| 成人美女大片| 97视频在线观看成人| 成人黄色网址| 久久精品视频在线观看| 超碰免费97在线观看| 日韩av在线资源| 可以免费观看的毛片| 欧美一区在线视频| 在线观看免费观看在线| 一本大道综合伊人精品热热| 日本一区二区网站| 一区二区三区蜜桃| 夫妻性生活毛片| 国产精品久久综合| 国产午夜精品久久久久久久久| 久久伊99综合婷婷久久伊| 中文字幕一区二区人妻电影丶| 国产丶欧美丶日本不卡视频| www.超碰97.com| 寂寞少妇一区二区三区| 欧美美女一级片| 美腿丝袜一区二区三区| 99热手机在线| 人妖欧美一区二区| 杨幂毛片午夜性生毛片| 秋霞电影一区二区| 欧美大尺度做爰床戏| 日韩综合小视频| 黄色一级免费大片| 日本网站在线观看一区二区三区| 免费观看成人网| 三级欧美韩日大片在线看| 成年人视频在线免费| 日韩中文字幕区一区有砖一区| 中文字幕欧美人妻精品一区| 日韩精品国产欧美| 99草草国产熟女视频在线| 视频一区中文字幕| 国产成人美女视频| 国产乱理伦片在线观看夜一区| 三级黄色片免费看| 国产成人鲁色资源国产91色综| 欧美成人精品一区二区综合免费| www.成人网.com| 动漫精品一区二区三区| 国产日韩欧美不卡| 欧美xxxooo| 亚洲精品国产a| 日韩av女优在线观看| 欧美日韩中文字幕在线视频| 亚洲无码精品一区二区三区| 欧美日韩精品一区二区天天拍小说 | 偷拍日韩校园综合在线| 国产午夜在线播放| 色偷偷88欧美精品久久久| 亚洲一区二区视频在线播放| 日韩欧美一区二区视频| 十八禁一区二区三区| 亚洲欧美综合v| 老司机免费在线视频| 欧美激情久久久| 高清av不卡| 91久久久久久久久久| 国产精品白丝av嫩草影院| 欧美一区二区在线| 亚洲免费二区| 欧美精品第三页| 国产一区二区精品久久91| 国产成人av无码精品| 国产精品天美传媒| 麻豆成人在线视频| 欧美自拍偷拍一区| 日韩一卡二卡在线| 中文字幕国产亚洲2019| 日本在线视频网址| 国产精品入口免费视频一| 成人18夜夜网深夜福利网| 日韩资源av在线| 欧美日本精品| 性生活免费在线观看| 99精品视频中文字幕| 男人晚上看的视频| 色婷婷久久久久swag精品 | 神马一区二区影院| 好吊日精品视频| 日本黄色的视频| 2014亚洲片线观看视频免费| a级黄色片免费看| 欧美午夜视频网站| 日本大片在线观看| 色综合久久天天综线观看| 欧美日一区二区三区| 久久久av水蜜桃| 国产一区二区中文| 中文字幕中文在线| 国产亚洲一本大道中文在线| 国产在线视频卡一卡二| 91麻豆精品91久久久久同性| 国产视频网址在线| 91精品国产精品| 网站一区二区| 精品少妇人妻av一区二区| 日韩精品亚洲专区| 亚洲第一香蕉网| 福利一区视频在线观看| 国产欧美一级片| 久久精品小视频| 成人做爰免费视频免费看| 麻豆久久久9性大片| 亚洲美洲欧洲综合国产一区| 潘金莲一级淫片aaaaa| 亚洲日本在线视频观看| 一级片视频免费| 日韩在线观看免费| 欧美综合影院| 亚洲欧洲久久| 麻豆久久久久久| 亚洲综合第一区| 欧美三级乱人伦电影| 成av人电影在线观看| 国产精品∨欧美精品v日韩精品| 亚洲精品国模| 国产精品第12页| 久久众筹精品私拍模特| caoporn国产| 亚洲图片欧美日产| 69堂精品视频在线播放| 欧洲亚洲一区二区| 日产欧产美韩系列久久99| 变态另类ts人妖一区二区| 欧美在线视频不卡| freemovies性欧美| 成人av在线天堂| 影音先锋日韩精品| 中文字幕在线观看视频www| 一区二区高清免费观看影视大全 | 国产一区二区三区精品视频| 日韩一区二区不卡视频| 欧美一区二区福利在线| 日本动漫同人动漫在线观看| 国产精品三区四区| 欧美视频一区| 一出一进一爽一粗一大视频| 日韩欧美黄色动漫| 69久久久久| **亚洲第一综合导航网站| 好吊日精品视频| 国产一二三四五区| 欧美日韩免费一区二区三区视频| 免费观看在线黄色网| 成人动漫在线观看视频| 国产精品综合| 中文乱码字幕高清一区二区| 欧美一区二区三区白人| 川上优av中文字幕一区二区| 欧美理论一区二区| 久久99精品国产.久久久久久| 九九视频免费看| 亚洲男人天堂网| 99精品国产九九国产精品| 成年人午夜视频在线观看| 欧美国产激情一区二区三区蜜月| 99久久久无码国产精品免费| 韩国精品久久久999| 欧美gayvideo| 亚洲美女在线播放| 欧美系列一区二区| 欧美xxxx做受欧美88bbw| 免费影院在线观看一区| 国产在线国偷精品免费看| 国产成人亚洲欧洲在线| 日韩在线欧美在线国产在线| 欧美交a欧美精品喷水| 中文字幕av不卡在线| 亚洲成人www| 色综合久久影院| 欧美午夜免费|