成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone開發(fā)應(yīng)用之UIView開發(fā)流程上篇

移動(dòng)開發(fā) iOS
不管你是使用系統(tǒng)的視圖還是創(chuàng)建自己的視圖,你需要理解UIView和UIWindow類所提供的基本結(jié)構(gòu)。這些類提供了復(fù)雜的方法來管理視圖的布局和展示。

iPhone開發(fā)應(yīng)用中的UIView你了解多少?曾經(jīng)有人這么說過,在iphone里你看到的,摸到的,都是UIView,所以UIViewiphone開發(fā)里具有非常重要的作用。那么UIView我們到底知道多少呢。請看看下面的問題,

如果這些你都知道,那么本文章的內(nèi)容就請繞道,如果你還不太清楚,我想看了下面的內(nèi)容,你就明白了。

1、bounds和frame分別表示什么?

2、ContentMode里UIViewContentModeScaleToFill代表什么?

3、contentStretch 里的指定UIView里縮放區(qū)域是如何計(jì)算的?

4、UIVIew里的哪些屬性變化可以用動(dòng)畫來呈現(xiàn)?

5、UIKit的坐標(biāo)系和Core Graphics的坐標(biāo)系的差別是什么?
 
視圖和窗口展示了應(yīng)用的用戶界面,同時(shí)負(fù)責(zé)界面的交互。UIKit和其他系統(tǒng)框架提供了很多視圖,你可以就地使用而幾乎不需要修改。當(dāng)你需要展示的內(nèi)容與標(biāo)準(zhǔn)視圖允許的有很大的差別時(shí),你也可以定義自己的視圖

不管你是使用系統(tǒng)的視圖還是創(chuàng)建自己的視圖,你需要理解UIView和UIWindow類所提供的基本結(jié)構(gòu)。這些類提供了復(fù)雜的方法來管理視圖的布局和展示。理解這些方法的工作非常重要,使你在應(yīng)用發(fā)生改變時(shí)可以確認(rèn)視圖有合適的行為。

視圖架構(gòu) fundamentals

大部分你想要可視化操作都是由視圖對象-即UIView類的實(shí)例-來進(jìn)行的。一個(gè)視圖對象定義了一個(gè)屏幕上的一個(gè)矩形區(qū)域,同時(shí)處理該區(qū)域的繪制和觸屏事件。一個(gè)視圖也可以作為其他視圖的父視圖,同時(shí)決定著這些子視圖的位置和大小。UIView類做了大量的工作去管理這些內(nèi)部視圖的關(guān)系,但是需要的時(shí)候你也可以定制默認(rèn)的行為。

視圖與Core Animation層聯(lián)合起來處理著視圖內(nèi)容的解釋和動(dòng)畫過渡。每個(gè)UIKit框架里的視圖都被一個(gè)層對象支持(通常是一個(gè)CALayer類的實(shí)例),它管理管理著后臺的視圖存儲和處理視圖相關(guān)的動(dòng)畫。然而,當(dāng)你需要對視圖的解釋和動(dòng)畫行為有更多的控制權(quán)時(shí),你可以使用層。

為了理解視圖和層之間的關(guān)系,我們可以借助于一些例子。圖1-1顯示了ViewTransitions樣例程序的視圖層次及其對底層Core Animation層的關(guān)系。應(yīng)用中的視圖包括了一個(gè)window(同時(shí)也是一個(gè)視圖),一個(gè)通用的表現(xiàn)得像一個(gè)容器視圖的UIView對象,一個(gè)圖像視圖,一個(gè)控制顯示用的工具條,和一個(gè)工具條按鈕(它本身不是一個(gè)視圖但是在內(nèi)部管理著一個(gè)視圖)。(注意這個(gè)應(yīng)用包含了一個(gè)額外的圖像視圖,它是用來實(shí)現(xiàn)動(dòng)畫的)。

為了簡化,同時(shí)因?yàn)檫@個(gè)視圖通常是被隱藏的,所以沒把它包含在下面的圖中。每個(gè)視圖都有一個(gè)相應(yīng)的層對象,它可以通過視圖礶r屬性被訪問。(因?yàn)楣ぞ邨l按鈕不是一個(gè)視圖,你不能直接訪問它的層對象。)在它們的層對象之后是Core Animation的解釋對象,***是用來管理屏幕上的位的硬件緩存。

iPhone開發(fā)應(yīng)用之UIView開發(fā)流程

Figure 1-1 View architecture

使用Core Animation的層對象有很重要的性能意義。一個(gè)視圖對象的繪制代碼需要盡量的少被調(diào)用,當(dāng)它被調(diào)用時(shí),其繪制結(jié)果會(huì)被Core Animation緩存起來并在往后可以被盡可能的重用。重用已經(jīng)解釋過的內(nèi)容消除了通常需要更新視圖的開銷昂貴的繪制周期。內(nèi)容的重用在動(dòng)畫中特別重要,我們可以使用已有的內(nèi)容,這樣比創(chuàng)建新的內(nèi)容開銷更小。

視圖層次和子視圖管理

除了提供自己的內(nèi)容之外,一個(gè)視圖也可以表現(xiàn)得像一個(gè)容器。當(dāng)一個(gè)視圖包含其他視圖時(shí),就在兩個(gè)視圖之間創(chuàng)建了一個(gè)父子關(guān)系。在這個(gè)關(guān)系中孩子視圖被當(dāng)作子視圖,父視圖被當(dāng)作超視圖。創(chuàng)建這樣一個(gè)關(guān)系對應(yīng)用的可視化和行為都有重要的意義。

在視覺上,子視圖隱藏了父視圖的內(nèi)容。如果子視圖是完全不透明的,那么子視圖所占據(jù)的區(qū)域就完全的隱藏了父視圖的相應(yīng)區(qū)域。如果子視圖是部分透明的,那么兩個(gè)視圖在顯示在屏幕上之前就混合在一起了。每個(gè)父視圖都用一個(gè)有序的數(shù)組存儲著它的子視圖,存儲的順序會(huì)影響到每個(gè)子視圖的顯示效果。如果兩個(gè)兄弟子視圖重疊在一起,后來被加入的那個(gè)(或者說是排在子視圖數(shù)組后面的那個(gè))出現(xiàn)在另一個(gè)上面。

父子視圖關(guān)系也影響著一些視圖行為。改變父視圖的尺寸會(huì)連帶著改變子視圖的尺寸和位置。在這種情況下,你可以通過合適的配置視圖來重定義子視圖的尺寸。其他會(huì)影響到子視圖的改變包括隱藏父視圖,改變父視圖的alpha值,或者轉(zhuǎn)換父視圖。

視圖層次的安排也會(huì)決定著應(yīng)用如何去響應(yīng)事件。在一個(gè)具體的視圖內(nèi)部發(fā)生的觸摸事件通常會(huì)被直接發(fā)送到該視圖去處理。然而,如果該視圖沒有處理,它會(huì)將該事件傳遞給它的父視圖,在響應(yīng)者鏈中以此類推。具體視圖可能也會(huì)傳遞事件給一個(gè)干預(yù)響應(yīng)者對象,像視圖控制器。如果沒有對象處理這個(gè)事件,它最終會(huì)到達(dá)應(yīng)用對象,此時(shí)通常就被丟棄了。

獲取更多關(guān)于如何創(chuàng)建視圖層次,查看 creating and managing a view hierarchy

視圖繪制周期

UIView類使用一個(gè)點(diǎn)播繪制模型來展示內(nèi)容。當(dāng)一個(gè)視圖***次出現(xiàn)在屏幕前,系統(tǒng)會(huì)要求它繪制自己的內(nèi)容。在該流程中,系統(tǒng)會(huì)創(chuàng)建一個(gè)快照,這個(gè)快照是出現(xiàn)在屏幕中的視圖內(nèi)容的可見部分。如果你從來沒有改變視圖的內(nèi)容,這個(gè)視圖的繪制代碼可能永遠(yuǎn)不會(huì)再被調(diào)用。這個(gè)快照圖像在大部分涉及到視圖的操作中被重用。

如果你確實(shí)改變了視圖內(nèi)容,也不會(huì)直接的重新繪制視圖內(nèi)容。相反,使用setNeedsDisplay或者setNeedsDisplayInRect:方法廢止該視圖,同時(shí)讓系統(tǒng)在稍候重畫內(nèi)容。系統(tǒng)等待當(dāng)前運(yùn)行循環(huán)結(jié)束,然后開始繪制操作。這個(gè)延遲給了你一個(gè)機(jī)會(huì)來廢止多個(gè)視圖,從你的層次中增加或者刪除視圖,隱藏,重設(shè)大小和重定位視圖。所有你做的改變會(huì)稍候在同一時(shí)間反應(yīng)。

注意:改變一個(gè)視圖的幾何結(jié)構(gòu)不會(huì)自動(dòng)引起系統(tǒng)重畫內(nèi)容。視圖的contentMode屬性決定了改變幾何結(jié)構(gòu)應(yīng)該如果解釋。大部分內(nèi)容模式在視圖的邊界內(nèi)拉伸或者重定位了已有快照,它不會(huì)重新創(chuàng)建一個(gè)新的快照。獲取更多關(guān)于內(nèi)容模式如果影響視圖的繪制周期,查看 content modes

當(dāng)繪制視圖內(nèi)容的時(shí)候到了時(shí),真正的繪制流程會(huì)根據(jù)視圖及其配置改變。系統(tǒng)視圖通常會(huì)實(shí)現(xiàn)私有的繪制方法來解釋它們的視圖,(那些相同的系統(tǒng)視圖經(jīng)常開發(fā)接口,好讓你可以用來配置視圖的真正表現(xiàn)。)對于定制的UIView子類,你通常可以覆蓋drawRect:方法并使用該方法來繪制你的視圖內(nèi)容。也有其他方法來提供視圖內(nèi)容,像直接在底部的層設(shè)置內(nèi)容,但是覆蓋drawRect:時(shí)最通用的技術(shù)

內(nèi)容模式

視圖的內(nèi)容模式控制著視圖如何回收內(nèi)容來響應(yīng)視圖幾何結(jié)構(gòu)的變化,也控制著是否需要回收內(nèi)容。當(dāng)一個(gè)視圖***次顯示時(shí),它通常會(huì)解釋內(nèi)容,其結(jié)果會(huì)被底層的層級樹捕獲為一張位圖。在那之后,改變視圖的幾何結(jié)構(gòu)不會(huì)導(dǎo)致重新創(chuàng)建位圖。相反,視圖中contentMode屬性的值決定著這張位圖是否該被拉伸,以適應(yīng)新的邊界或者只是簡單的被放到角落或者視圖的邊界。

視圖的內(nèi)容模式在你進(jìn)行如下操作時(shí)被應(yīng)用:

改變視圖frame或者bounds矩形的寬度或者高度時(shí)。

賦值給視圖的transform屬性,新的轉(zhuǎn)換包括一個(gè)放縮因子。

大部分視圖的contentMode值是UIViewContentModeScaleToFiill,它使視圖的內(nèi)容被放縮到適合新框架的值。Figure 1-2展示了使用其他可用的內(nèi)容模式的結(jié)果。正如你在圖中所看到的那樣,不是所有的內(nèi)容模式都可以填充視圖的范圍,可以的模式可能會(huì)扭曲內(nèi)容。

內(nèi)容模式很好的支持了視圖的內(nèi)容回收,但是當(dāng)你想視圖在放縮和重設(shè)尺寸的操作中重繪你也可以用UIViewContentModeRedraw內(nèi)容模式。設(shè)置這個(gè)值繪強(qiáng)制系統(tǒng)調(diào)用視圖的drawRect:方法來響應(yīng)幾何結(jié)構(gòu)的變化。通常來講,你應(yīng)該盡可能的避免使用這個(gè)模式,同時(shí)你不應(yīng)該在標(biāo)準(zhǔn)的系統(tǒng)視圖中使用這個(gè)模式。

獲取更多骨干與可用的內(nèi)容模式,查看UIView Class Reference

iPhone開發(fā)應(yīng)用之UIView開發(fā)流程

Figure 1-2

拉伸視圖

你可以指定視圖的某部分為可拉伸的,以便當(dāng)視圖的尺寸改變時(shí)只有可拉伸的部分被影響到。可拉伸的部分通常給按鈕或者其他的部分為重復(fù)模式的視圖。由你指定的可拉伸區(qū)域允許沿著兩條或者其中一條軸拉伸。當(dāng)然,當(dāng)一個(gè)視圖沿著兩條軸拉伸的時(shí)候,視圖的邊界必須也定義了一個(gè)重復(fù)的模式來避免任何的扭曲。Figure1-3展示了這種扭曲在視圖里是怎么表現(xiàn)自己的。每個(gè)視圖里的原始像素的顏色都自我復(fù)制,以便可以填充更大視圖的相應(yīng)區(qū)域。

iPhone開發(fā)應(yīng)用之UIView開發(fā)流程

Figure 1-3 拉伸一個(gè)按鈕的背景

你可以用contentStretch屬性來定義一個(gè)視圖的可拉伸區(qū)域。這個(gè)屬性的值一個(gè)邊的值被標(biāo)準(zhǔn)化為0.0到1.0之間的矩形。當(dāng)拉伸這個(gè)視圖時(shí),系統(tǒng)將視圖的當(dāng)前邊界值和放縮因子乘以標(biāo)準(zhǔn)值,以便決定哪些像素需要被拉伸。使用標(biāo)準(zhǔn)值可以減輕每次改變視圖的邊界值都更新contentStretch屬性的需要。

視圖的內(nèi)容模式也在決定如何視圖的可拉伸區(qū)域的使用中扮演著重要的角色。只有當(dāng)內(nèi)容模式可能繪引起視圖內(nèi)容放縮的時(shí)候可拉伸區(qū)域才會(huì)被使用。這意味這你的可拉伸視圖只被UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit和UIViewContentModeScaleAspectFill內(nèi)容模式。如果你指定了一個(gè)將內(nèi)容彈到邊界或者角落的內(nèi)容模式(這樣就沒有真正的放縮內(nèi)容),這個(gè)視圖會(huì)忽視可拉伸區(qū)域。

注意:當(dāng)需要?jiǎng)?chuàng)建一個(gè)可拉伸UIImage對象作為視圖的背景時(shí),使用contentStretch屬性是推薦的。可拉伸視圖完全被Core Animation層處理,這樣性能通常更好。

嵌入式動(dòng)畫支持

使用層對象來支持視圖的其中一個(gè)利益是你可以輕松的用動(dòng)畫處理視圖相關(guān)的改變。動(dòng)畫是與用戶進(jìn)行信息交流的一個(gè)有用的方法,而且應(yīng)該總是在進(jìn)行應(yīng)用設(shè)計(jì)的過程中考慮使用動(dòng)畫。UIView類的很多屬性是動(dòng)畫化的-也就是,可以半自動(dòng)的從一個(gè)值動(dòng)畫的變化到另一個(gè)值。為了實(shí)現(xiàn)這樣一個(gè)動(dòng)畫,你需要做的只是:

1、告訴UIKit你想要實(shí)現(xiàn)一個(gè)動(dòng)畫

2、改變這個(gè)屬性的值

在一個(gè)UIView對象中有以下的動(dòng)畫化屬性:

frame - 你可以使用這個(gè)來動(dòng)畫的改變視圖的尺寸和位置

bounds - 使用這個(gè)可以動(dòng)畫的改變視圖的尺寸

center - 使用這個(gè)可以動(dòng)畫的改變視圖的位置

transform - 使用這個(gè)可以翻轉(zhuǎn)或者放縮視圖

alpha - 使用這個(gè)可以改變視圖的透明度

backgroundColor - 使用這個(gè)可以改變視圖的背景顏色

contentStretch - 使用這個(gè)可以改變視圖內(nèi)容如何拉伸

動(dòng)畫的一個(gè)很重要的地方是用于從一組視圖到另一組視圖的過渡。通常來說,會(huì)用一個(gè)視圖控制器來管理關(guān)系到用戶界面的主要變更的動(dòng)畫。例如,涉及到從高層到底層信息的導(dǎo)航的界面,通常會(huì)使用一個(gè)導(dǎo)航控制器來管理視圖的過渡,這些視圖顯示了數(shù)據(jù)的每一個(gè)連續(xù)層面。然而,你也可以使用動(dòng)畫來創(chuàng)建兩組視圖的過渡,而不是視圖控制器。當(dāng)你想用一個(gè)系統(tǒng)提供的視圖控制器無法支持的導(dǎo)航方案時(shí)你可能會(huì)這樣做。

除了用UIKit類可以創(chuàng)建動(dòng)畫外,你也可以用Core Animation層來創(chuàng)建動(dòng)畫。在更低層你有更多的在時(shí)間或者動(dòng)畫屬性上的控制權(quán)。

獲取更多關(guān)于如何創(chuàng)建一個(gè)基于視圖的動(dòng)畫,查看 Animations

獲取更多關(guān)于使用Core Animation創(chuàng)建動(dòng)畫的信息,查看Core Animation Programming Guide和Core Animation Cookbook.

視圖幾何結(jié)構(gòu)和坐標(biāo)系統(tǒng)

UIKit的默認(rèn)坐標(biāo)系統(tǒng)把原點(diǎn)設(shè)置在左上角,兩條軸往下和右擴(kuò)展。做標(biāo)志被表示為浮點(diǎn)數(shù),這樣允許內(nèi)容的精確布局和定位而不管底層的屏幕。Figure1-4展示了相對于屏幕的坐標(biāo)系統(tǒng)。除了屏幕坐標(biāo)系統(tǒng)窗口和視圖也定義了它們自己的本地坐標(biāo)系統(tǒng),這樣允許你指定相對于視圖或者窗口原點(diǎn)的坐標(biāo)而不是屏幕。

 

iPhone開發(fā)應(yīng)用之UIView開發(fā)流程

Figure 1-4 UIKit中的坐標(biāo)系統(tǒng)

因?yàn)槊總€(gè)視圖和窗口都定義了它自己的本地坐標(biāo)系統(tǒng),你需要留意在任何時(shí)間內(nèi)是哪個(gè)坐標(biāo)系統(tǒng)在起作用。每次繪制或者改變一個(gè)視圖都是基于一個(gè)坐標(biāo)系統(tǒng)的。在某些繪制中會(huì)基于視圖本身的坐標(biāo)系統(tǒng)。在某些幾何結(jié)構(gòu)變更中是基于父視圖的坐標(biāo)系統(tǒng)的。UIWindow和UIView類都包含了幫助你從一個(gè)坐標(biāo)系統(tǒng)轉(zhuǎn)換到另一個(gè)的方法。

重要:一些iOS技術(shù)定義了默認(rèn)的坐標(biāo)系統(tǒng),它們的原點(diǎn)和方向與UIKit的不同。;例如,Core Graphics和OpenGL ES的坐標(biāo)系統(tǒng)是原點(diǎn)在可視區(qū)域的左下角,而y軸往上遞增。當(dāng)繪制或者創(chuàng)建內(nèi)容時(shí),你的代碼應(yīng)該考慮到一些不同并且適應(yīng)坐標(biāo)值。

frame, bounds和center屬性之間的關(guān)系

視圖對象使用frame, bounds和center屬性來跟蹤它的尺寸和位置:

frame屬性包含了frame矩形,指定了在父視圖坐標(biāo)系統(tǒng)中該視圖的尺寸和位置。

center屬性包含了在父視圖坐標(biāo)系統(tǒng)中的已知中心點(diǎn)。

bounds屬性包含了邊界矩形,指定了在視圖本地坐標(biāo)系統(tǒng)中視圖的尺寸。

主要使用center和frame屬性來控制當(dāng)前視圖的幾何結(jié)構(gòu)。例如,當(dāng)在運(yùn)行時(shí)構(gòu)建你的視圖層次或者改變視圖的尺寸或者位置時(shí)你可以使用這些屬性。如果你只是要改變視圖的位置,那么推薦使用center屬性。center屬性的值永遠(yuǎn)是可用的,即使添加了放縮或者轉(zhuǎn)換因子到視圖的轉(zhuǎn)換矩陣當(dāng)中。但是對于frame屬性卻不是,當(dāng)視圖的轉(zhuǎn)換矩形不等于原始矩陣時(shí)它被當(dāng)作時(shí)無效的。

在繪制的過程中主要使用bounds屬性。這個(gè)邊界矩陣在視圖的本地坐標(biāo)系統(tǒng)被解釋。這個(gè)矩形的默認(rèn)原點(diǎn)是(0, 0),它的尺寸也適應(yīng)frame矩形的尺寸。任何繪制在這個(gè)矩形當(dāng)中的東西都是該視圖的可視內(nèi)容的一部分。如果你改變了bounds矩形的原點(diǎn),任何你繪制在新矩形的東西都會(huì)變成該視圖可視內(nèi)容的一部分。

Figure1-5展示了一個(gè)圖像視圖的frame和bounds矩形之間的關(guān)系。圖中,圖像視圖的右上角被定位在父視圖坐標(biāo)系統(tǒng)的(40, 40),它的矩形尺寸為240x380。對于bounds矩形,原點(diǎn)是(0, 0),矩形尺寸也是240x380。

 

iPhone開發(fā)應(yīng)用之UIView開發(fā)流程

Figure 1-5 視圖frame和bounds之間的關(guān)系

即使你可以獨(dú)立的改變frame,bounds和center屬性,其中一個(gè)改變還是會(huì)影響到另外兩個(gè)屬性:

當(dāng)你設(shè)置了frame屬性,bounds屬性的尺寸值也改變來適應(yīng)frame矩形的新尺寸。center屬性也會(huì)改變?yōu)樾耭rame矩形的中心值。

當(dāng)你設(shè)置了center屬性,frame的原點(diǎn)也會(huì)相應(yīng)的改變。

當(dāng)你設(shè)置了bounds屬性,frame屬性會(huì)改變以適應(yīng)bounds矩形的新尺寸。

視圖的框架默認(rèn)不會(huì)被它的父視圖框架裁剪。這樣的化,任何放置在父視圖外的子視圖都會(huì)被完整的解釋。你可以改變這種行為,改變父視圖的clipsToBounds屬性就可以。不管子視圖是否在視覺上被裁剪,觸屏事件總是發(fā)生在目標(biāo)視圖父視圖的bounds矩形。換句話說,如果觸摸位于父視圖外的那部分視圖,那么該事件不會(huì)被發(fā)送到該視圖。

小結(jié):關(guān)于iPhone開發(fā)應(yīng)用之UIView開發(fā)流程 上篇的內(nèi)容介紹完了,如果你對本文感興趣的話,請繼續(xù)閱讀 iPhone開發(fā)應(yīng)用之UIView開發(fā)流程 下篇,***希望本文能對你有所幫助!關(guān)于iphone開發(fā)的更多內(nèi)容,請去iphone開發(fā)頻道

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-08-11 10:27:37

iPhoneUIView視圖

2011-08-12 11:31:46

iPhoneUIView動(dòng)畫

2011-07-19 09:46:38

2011-08-10 10:23:20

iPhoneArchivingNSCoder

2011-08-16 19:02:23

iPhone開發(fā)繪圖

2011-08-15 13:50:06

IPhone開發(fā)UIView動(dòng)畫

2011-08-04 16:17:39

iPhone 開發(fā)工具

2011-08-15 10:35:43

iPhone開發(fā)Atomicnonatomic

2011-08-15 18:02:32

iPhone開發(fā)表視圖

2011-08-11 11:51:07

iPhone鍵盤

2011-08-15 10:15:00

iPhone開發(fā)警告框

2011-08-19 14:27:29

iPhone開發(fā)

2011-08-22 14:21:24

iPhone開發(fā)UIView Anim

2011-08-05 13:49:53

iPhone 應(yīng)用 開發(fā)

2011-08-11 17:32:51

iPhone視圖

2011-08-16 18:13:42

IPhone開發(fā)UIView動(dòng)畫

2011-08-12 10:16:10

iPhone通訊錄聯(lián)系人

2011-08-08 10:10:14

iPhone開發(fā) 圖片 方法

2011-08-08 16:56:44

iPhone 字符處理 視圖

2011-08-10 10:10:21

iPhoneUIPopoverCo
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久a丨 | 中文字幕不卡视频在线观看 | 久久精品一 | 国产精品日韩欧美一区二区三区 | 狠狠色香婷婷久久亚洲精品 | 久久在线免费 | 一区二区三区在线观看视频 | 日韩精品免费 | 爱爱综合网 | 中国黄色毛片视频 | 中文字幕一区二区三区乱码图片 | 精品久久久久久亚洲精品 | 亚洲国产高清免费 | 日韩一区二区在线观看视频 | 日韩成人免费中文字幕 | 久久久久久久久国产成人免费 | 精品一区二区观看 | 成人高清在线 | 亚洲一区二区三区久久久 | 国产美女自拍视频 | 正在播放国产精品 | 中文字幕乱码一区二区三区 | 欧美一区在线看 | 久久狼人天堂 | aaa一区| 精品一区二区三区在线视频 | 亚洲精品日韩在线 | 欧美aaaaaaaaaa | 欧美日韩不卡合集视频 | 国产色婷婷精品综合在线手机播放 | 久久久久亚洲国产| 国产福利在线视频 | 亚洲免费精品 | 欧美1区2区 | 久久精品日 | 一级一级毛片免费看 | 欧美99| 日韩欧美视频网站 | 九九九久久国产免费 | 亚洲一区三区在线观看 | 91色视频在线观看 |