IOS底层架构总结(2)UIKit

按照苹果官方文档的介绍,UIKit是为iOS构建应用程序所需的核心对象。可以使用这些对象在屏幕上显示内容,与内容交互,并管理与系统的交互。应用程序依赖于UIKit的基本行为,UIKit提供了许多方法来定制该行为以满足您的特定需求

UIKit应用程序的结构基于模型-视图-控制器(MVC)设计模式,其中对象按其目的划分。模型对象管理应用程序的数据和业务逻辑。视图对象提供数据的可视表示。控制器对象充当模型和视图对象之间的桥梁,在适当的时间在它们之间传递数据。

下图代表了一个典型的UIKit框架结构。


3018808-a7740769eaa1c66e.png

通过UIView来显示屏幕UIApplication来管理生命周期,要注意的是,当一个app被启动时,程序会先短时间进入非活动状态(inactive),而当一个app关闭时会短时间进入后台状态(background)直到系统静默终止进入非运行状态(suspend)。
(大致的周期为: not running ===> inactive ===> active ===> inactive ===> background ===> suspend )

在UIApplication的Delegate中为我们提供了状态更改的处理事件

  • Launch。
    应用程序从非运行状态过渡到非活动状态或后台状态。准备应用程序运行。

  • Activation
    应用程序从非活动状态转变为活动状态。应用程序在前台运行并在屏幕上可见

  • Deactivation
    应用程序从活动状态转变为非活动状态。

  • Background execution
    应用程序从非活动状态或非运行状态过渡到后台状态。在运行屏幕时只处理基本任务;准备应用程序在后台运行。

  • Termination
    应用程序从任何运行状态过渡到非运行状态。(暂停的应用程序在终止时不通知)。取消所有任务并准备退出。


  • UIKit类架构图


    984916-20160701214405843-875974577.jpg

UIAcceleration

被叫做加速事件的一个UIAcceleration类的实例是用来代表即时的三维加速数据。为了接收重力加速度,要注册一个应用应用程序作为一个共享UIAccelerater对象的委托对象(参考UIAcceleromete类)。


UIAccelerater

UIAccelerater类可以让你的寄存器接收到从板载硬件上得到的加速相关数据。当设备移动时,它的硬件能够报告沿主线在三维空间中的线性加速度变化。你可以利用这些数据来检测器件的电流方向和该方向的瞬时变化。你可以使用这瞬时变化输入到一个游戏或者启动应用程序中的一些行动。


UIaccessibilityElement

UIAccessibilityElement类封装的项目信息对一些特殊的人可见,默认情况下是不可访问的。例如,一个图标或文字图像不会自动访问,因为它没有继承的UIView(或UIControl)。一个包含等非视图的项目,创建一个实例来表示每个项目需要访问的UIAccessibilityElement。


UIBarItem

UIBarItem是一个抽象的超类用来在屏幕的底部给项目加上一栏。带栏的条目类似于一个按钮的方式。他们有标题,有图片,动作和目标。你可以在项目中启用和禁用一个带栏条目。


UIBarButtonItem

一个栏按钮项目是放置在一个UIToolbar或UINavigation对象专门的按钮。它从它的抽象父类,UIBarItem继承的基本按钮的行为。UIBarButtonItem定义额外的初始化方法和属性,使用工具栏和导航栏。


UITabBarItem

UITabBarItem类实现了一个带标签栏的项目,UITabBar类的实例。一个标签栏严格地以收音机模式来运作,其中一个项目是在选定的时间,点击标签栏项目切换上面的标签栏。您还可以指定在标签栏上项目的信息,例如加入额外的视觉徽章值,电话应用程序上使用该项目的徽章,以显示新邮件的数量。这个类还提供了一些系统默认创建的项目。


UIBezierPath

UIBezierPath类,您可以定义一个路径由直线和曲线的线段组成,并呈现在您的自定义视图路径。您可以使用这个类,最初只是为您的路径中指定的几何形状。路径可以定义简单的形状,如矩形,椭圆形和圆弧,或他们可以定义

杂的多边形,采用直线和曲线线段的混合物。定义的形状后,您可以使用这个类的其他方法来呈现当前图形上下文的路径。


UIColor

一个UIColor对象代表的颜色,有时不透明(alpha值)。您可以使用UIColor对象来存储颜色数据,并在绘画过程中,你可以用它们来设置当前填充和笔触颜色。


UIDecive

UIDevice类提供了一个单个实例代表当前设备。从这个实例中,可以获取有关设备的唯一的ID,分配名称,设备型号,和操作系统名称和版本等信息。您也可以使用的UIDevice实例,检测设备的特点,如物理方向的变化。使用方向属性得到当前的方向,或注册UIDeviceOrientationDidChangeNotification通知收到更改通知。在使用这些技术来获得定位数据之前,你必须使数据传递,使用的beginGeneratingDeviceOrientationNotifications方法。当您不再需要跟踪设备的方向,调用endGeneratingDeviceOrientationNotifications方法来禁用交付的通知..


UIDocumentInteractionController

一个文件交互控制器一起委托对象,提供应用程序管理与本地系统中的文件的用户交互的支持。例如,一个电子邮件程序可能使用这个类,允许用户预览附件和其他应用程序中打开它们。使用这个类,目前预览相应的用户界面,打开,复制或打印指定的文件。


UIEvent

一个UIEvent对象(或者简单地说,一个事件对象)代表在IOS的事件。一般有三种类型的事件:触摸事件,运动事件和远程控制的事件,。远程控制的事件使一个Responder对象来接收来自外部的附件或耳机的命令,以便它可以管理管理音频和视频,例如,播放视频或跳过到下一音轨。


UIFont

UIFont类提供了用于获取和设置字体信息的接口。类提供了访问字体的特点,还提供了访问,这是在布局过程中中使用的字体的字形信息系统。他们通过接受它们作为参数的方法,您可以使用字体对象。


UIGestureRecognizer

UIGestureRecognizer是一个具体的手势识别类的抽象基类。一个手势识别对象(或简单地说,一个手势识别)中分离出来承认这种认识上的姿态和行动的逻辑。当这些对象之一承认一个共同的姿态,或者,在某些情况下,改变的姿态,它发送一个动作消息,每一个指定的目

物镜。以下胃具体的子类:


UITapGestureRecognizer

单个或多个塞子。指定数量的手指必须要承认的姿态,挖掘查看指定的次数。


UIPinchGestureRecognizer

看起来捏的手势,涉及两个接触。当用户将两个手指,向对方的传统意义是缩小;当用户将两个手指从彼此远离,传统意义变焦。


UIRotationGestureRecognizer

看起来轮换涉及两个触摸手势。当用户移动手指对面对方的圆周运动,基本的观点应该在相应的方向和速度旋转。


UISwipeGestureRecognizer

看起来刷卡在一个或多个方向的手势。抨击是一个独立的姿态,因此,相关的操作的消息发送每个手势只有一次。


UIPanGestureRecognizer

看起来平移(拖动)的手势。用户必须按查看上一个或更多的手指,而他们平移。实施这个手势识别动作方法的客户端可以要求它目前的翻译和手势的速度。


UILongPressGestureRecognizer

看起来长按手势。用户必须按下一个或更多的手指行动讯息传送至少指定期限。此外,手指可能要承认的姿态移动唯一指定的距离;如果他们超越这个限制的姿态失败。


UIImage

一个UIImage对象是一个高层次的的方式来显示图像数据。您可以从文件中创建的图像,从石英图像中的物体,或从您收到的原始图像数据。UIImage的类还提供图像绘制到当前图形的上下文中,使用不同的混合模式和不透明度值的几种选择。


UILocalizedIndexedCollation

UILocalizedIndexedCollation类方便为有部分指数的图表进行组织,整理,以及数据本地化。表视图的数据源,然后使用排序对象提供的输入节的标题和节索引标题的表视图。


UILocalNotification

UILocalNotification实例表示,应用程序可以提交给它的用户在特定的日期和时间安排的通知。操作系统是负责在适当的时间提供通知;没有要运行发生的应用程序。虽然本地的通知类似,因为它们是用于显示警报,播放声音和徽章的应用程序图标,远程通知,它们是组成和本地传递,不需要与远程服务器连接。


UIMenuController

他单身UIMenuController实例介绍了菜单界面的剪切,复制,粘贴,选择,选择,和删除命令。


UINavigationItem

UINavigationItem类封装了一个UINavigationBar对象的堆栈上推导航项目的信息。一个导航栏是用于控制导航层次的内容。一个UINavigationItem指定什么是导航栏上的显示,当它是顶部的项目,也代表它是如何时,后面的项目。


UINib

UINib类的实例作为对象包装或容器,InterfaceBuilder的nib文件。一个UINib对象在内存中缓存的一个nib文件的内容,准

解档和实例。当您的应用程序需要实例化的nib文件的内容,它可以这样做,而不必从nib文件加载数据,从而提高性能。UINib对象可以自动释放该缓存笔尖数据免费为您的应用程序内存在低内存条件下,重新装载数据下一次你的应用程序实例笔尖。您的应用程序应该使用UINib对象时,它需要反复实例相同的笔尖数据。例如,如果您的表视图使用nib文件实例表视图细胞,缓存中UINib对象的笔尖可以提供显着的性能改善。


UIPasteboard

UIPasteboard类允许应用程序共享应用程序内部或与其他应用程序使用的全系统或应用程序特定的黏贴板的数据。


UIPopoverController

UIPopoverController类是用于管理在popover中内容的呈现。你使用popovers暂时地呈现目前信息暂时而且用一种不超过整个屏幕就像一个模态视图的方式。popover内容是你在一个特殊类型的窗口的现有内容上分层。popover仍然可见,直到用户水龙头以外的popover窗口或你明确驳回。Popover控制器为iPad等设备的提供使用仅限。尝试在其他设备结果出现异常时进行新的一个创建。


UIPrintFormatter

UIPrintFormatter时打印格式化的抽象基类:展示了传统的可打印的内容对象可以跨页边界。由于打印格式化,打印系统,可以自动打印与打印格式化的内容相关联的类型。以下为UIPrintFormatter的子类:


UISimpleTextPrintFormatter

UISimpleTextPrintFormatter类的实例进行布局打印纯文本,可能是多个页面。类允许您指定的印刷文字全球的字体,颜色,对齐线,和换行符的模式属性。


UIMarkupTextPrintFormatter

UIMarkupTextPrintFormatter类的实例展示了一个多页打印作业的HTML标记文本。


UIViewPrintFormatter

UIViewPrintFormatter类的一个实例,勾画出用于打印的视图绘制的内容。视图的内容可以跨越多个页面。


UIPrintInfo

一个UIPrintInfo对象封装了有关打印作业的信息,包括打印机标识,作业名称,输出类型(照片,正常,灰阶),方向(纵向或横向),和任何选定的双工模式,。打印系统打印时,使用此信息。


UIPrintInteractionController

UIPrintInteractionController类的共享实例,提出了印刷的用户界面和管理的文件,图像和其他可打印的内容在iOS打印。UIPrintInteractionController是IOS中央印刷类。它的共享实例代表一个打印作业。打印作业,包括其印刷相关的信息和选项,如输出类型,作业名称,纸张大小和方向,要打印的内容。


UIPrintPageRenderer

一个UIPrintPageRenderer对象绘制要打印页的内容带或不带打印格式化.A页面的渲染就是UIPrintPageRenderer自定义子类的一个实例。当您撰写打印作业使用的UIPrintInteractionController共享实例,您指定的页面渲染到该实例的printPageRenderer属性。


UIPrintPaper

UIPrintPaper类的一个实例封装使用的纸张尺寸,打印作业,并在其中的内容可以打印的矩形。


UIResponder

UIResponder类定义了一个接口,应对和处理事件的对象。它是UIApplication,UIView和它的子类(包括UIWindow中)的超类。这些类的实例有时被称为作为响应者对象或简单地说,应答。


UiApplication

UiApplication类,提供了一个在iOS上运行的应用程序的控制和协调集中点。每个应用程序必须具有完全的UIApplication的一个实例(或子类UIApplication)。当一个应用程序启动时,UIApplicationMain函数被调用,在其他任务中,这个函数创建了一个单身的UIApplication对象。此后,您可以通过这个对象调用sharedApplication类方法。


UIViewController

UIViewController类提供iPhone应用程序的基本观点的管理模式。基本视图控制器类支持相关联的视图的演示,为管理模式视图提供支持,并支持在响应设备方向变化旋转的意见。象UINavigationController和UITabBarController的这样的子类,如提供管理复杂的层次结构视图控制器和视图的其他行为。


UITabBarController

UITabBarController类实现了一个专门的视图控制器管理一个广播式的选择界面。不适用于这个类的子类。相反,您可以使用它的实例去呈现允许用户在不同的操作模式之间进行选择的接口。这个标签栏界面显示在窗口底部的制表符之间的不同模式从而用来显示模式的意见选择。


UITableViewController

UITableViewController类创建一个控制器对象,管理表视图。


UINavigationController

UINavigationController的类实现了一个专门的视图控制器管理层次的内容导航。不适用于这个类的子类。相反,您可以使用实例当你希望你的应用程序的用户界面能够反映您的内容的层次性。此导航界面使你更有效的展现数据而且更容易让用户浏览内容。


UIImagePickerController

UIImagePickerController类管理定制的和系统提供的用户界面,支持的设备上的图片和电影,并选择把使用的图片和电影保存在您的应用程序中。的图像选取器控制器管理用户交互和委托对象提供这些相互作用的结果。


UIVideoEditorController

一个UIVideoEditorController对象,或视频编辑器,通过修剪从以前录制的电影的开始和结束的视频帧,以及重新编码降低质量来管理系统提供的用户界面。对象管理的用户交互,并提供您的委托对象编辑的电影文件系统路径。UIVideoEditorController类的特点是仅适用于设备,支持视频录制。


UIView

UIView类通过定义一个在屏幕和界面上的矩形区域来管理这块区域的内容。在运行时,视图对象处理其区域内的任何内容渲染,还处理与该内容的任何相互作用。UIView类本身提供了基本行为的背景颜色填充矩形区域。更加复杂的内容,可以通过继承UIView和实施必要的绘图和自身事件处理代码来展现。UIKit框架还包括一个

准的子类可以使用的范围从简单的按钮到复杂的表集。例如,一个UILabel对象绘制一个文本字符串和一个UIImageView对象绘制一个图像。


UIWindow

UIWindow类定义,管理和协调的Windows应用程序显示在屏幕上的对象(如Windows)。一个窗口的两个主要职能是,为显示其意见面积和分发活动的意见。窗口是在视图层次的根。一个窗口属于一个级别;一个级别的窗口出现另一个层面以上。例如,警报出现高于正常的窗口。通常情况下,只有一个在IOS应用程序的窗口。


UILabel

UILabel类实现一个只读的文本视图。您可以使用这个类的静态文本,如你可能会使用它来识别你的用户界面的其他部分,绘制一个或多个行。基本UILabel类提供控制文本的外观,包括它是否使用了一层阴影,或汲取的一大亮点。如果需要,您可以自定义文本的外观进一步通过继承。


UIPickerView

UIPickerView类实现对象,所谓的选择器的看法,即使用一个纺车或老虎 机的比喻来显示一个或多个值集。用户可以选择旋转的车轮,使所需的行的值与选择的指

之间的对应关系值。UIDatePicker类使用一个自定义子类的UIPickerView显示日期和时间。为了看一个例子,挖掘在时钟应用程序报警窗格添加(“+”)按钮


UIProgressView

当一个邮件应用程序下载消息时它的进度条会在应用程序的底部显示。UIProgressView类提供了管理风格的进度条,用于获取和设置值是固定的任务的进度的属性。


UIActivityIndicatorView

UIActivityIndicatorView类创建和管理一个指标用来显示不确定的任务进度。从外观上看,这个指

是一个“齿轮”是动画旋转。


UIImageView

图像的视图对象提供了一个用于显示单个图像或者一系列动画图像的基于视图的容器。对于动画图像,UIImageView的类提供设置动画的持续时间和频率的控制。您还可以启动和停止动画自由。


UITabBar

UITabBar类实现了一个选择两个或多个按钮的控制,并称之为项目。一个标签栏最常见的用途是实现一个模态接口攻一个项目的变化选择。如果你想暂时突出或不会改变某个项目的外观时,轻按按钮,使用一个UIToolbar对象。UITabBar类提供为用户定制能力重新排列标签栏,删除和酒吧中添加项目。您可以使用标签栏的委托,以增加这种行为。


UIToolBar

一个工具栏是显示一个或多个按钮被称之为工具栏项一种控制。当被轻按时工具栏瞬间突出或不改变某个项目的外观。


UINavigationBar

UINavigationBar类实现了一个层次的内容导航控制。它的一个条形栏,通常显示在屏幕上方,包含用于导航的向上和向下一个层次的按钮。主要属性是左(后退)按钮,中心的名称和一个可选的右边的按钮。您可以指定这些自定义视图。


UITableViewCell

的UITableViewCell类定义的细胞出现在UITableView的对象的属性和行为中。


UIActionSheet

使用UIActionSheet类可以把一套如何继续给定任务的替代品给用户。您还可以使用行动表,以提示用户确认是否有潜在危险的行动。该行动表包含一个可选的标题和一个或多个按钮,其中每个对应采取的行动。


UIAlterView

使用UIAlertView类向用户显示一条警告消息。警报视图的功能相似,但在外观上不同于一个动作表(UIActionSheet的一个实例)。


UIScrollView

UIScrollView的类提供支持显示的内容是大于应用程序的窗口大小。它可以使用户内滚动的内容,通过刷卡手势,和捏的手势放大和部分内容。


UITextView

UITextView的类实现一个滚动的,多行文本区域的行为。类支持使用自定义字体,颜色,和对齐的文本的显示,同时还支持文本编辑。通常可以使用一个文本视图,显示多行文本,如显示一个大的文本文件的身体时,。


UITableView

的UITableView(或简单地说,表视图)的一个实例是用于显示和编辑分层列出的信息的一种手段。


UISearchBar

UISearchBar类实现一个基于文本的搜索的文本字段控制。该控件提供了一个搜索按钮,输入文字的文本字段书签“按钮,一个取消按钮。UISearchBar对象实际上并不执行任何搜索。您可以使用委托,符合UISearchBarDelegate协议的对象,实施行动时,输入文本和按钮被点击。


UIWebView

您使用了UIWebView类,在您的应用程序中嵌入网页内容。要做到这一点,你只需创建一个UIWebView对象,将它附加到一个窗口,它发送一个请求加载网页内容。您也可以使用这个类在网页的历史向前和向后移动,你甚至可以设置一些网页内容属性的编程。


UIControl

UIControl是为控制对象,如用户的意图传达到应用程序的按钮和滑块的基类。你不能直接使用UIControl类实例化控制。相反,它定义了共同的界面和它的所有子类的行为结构。


UIButton

UIButton的类的一个实例,实现了在触摸屏上的按钮。触摸一个按钮拦截事件和动作消息发送到目标对象时。设定的目

和行动方法都继承自UIControl。这个类提供了方法来设置标题,图像,按钮等外观属性。通过这些访问,您可以为每个按钮状态指定一个不同的外观。


UIDatePicker

UIDatePicker类实现了一个对象,它使用多个旋转的车轮,以允许用户选择日期和时间。iPhone的例子是一个日期选择器,定时器和闹钟设置闹钟的时钟应用程序中的窗格。您也可以使用日期选择器作为一个倒数计时器。


UIPageControl

您可以使用UIPageControl类来创建和管理页面控制。一个页面控制是在控制中心的点继承。每个点对应一个应用程序的文档(或其他实体的数据模型)页面,白色圆点表示当前浏览的网页。


UISegmentedControl

一个UISegmentedControl对象是横向控制多个段,每个段作为一个独立的按钮运作。分段控制提供一个紧凑的手段,组合到一起的控制。


UITextField

UITextField对象是一个显示可编辑的文字和动作消息发送到目标对象,当用户按下返回按钮控制。通常可以使用这个类从用户收集少量的文字,并执行一些立即采取行动,如搜索操作,根据该文本。


UISlider

一个UISlider对象是一个可视化的控制,用来选择一个连续值范围从单一的值。滑块始终显示为单杠。指
,或拇指,注意到滑块的当前值,并更改设置的用户可以通过移动。


UISwitch

您可以使用UISwitch类来创建和管理ON/ OFF按钮,您会看到,例如在飞行模式等服务的偏好设定(设定)。这些对象被称为开关。


UIScreen

一个UIScreen对象包含设备的整个屏幕的边界矩形。当设置应用程序的用户界面,你应该使用这个对象的属性,能为您的应用程序的窗口的建议的框架矩形。


UIScreenMode

一个UIScreenMode对象表示的,可以应用到一个UIScreen对象的属性可能。该对象封装了有关屏幕的底层显示缓冲区的大小和使用单个像素的宽高比信息。


UISearchDisplayController

搜索显示控制器管理一个搜索栏,显示表视图显示另一种观点认为控制器管理的数据搜索的结果。


UITextChecker

您使用的UITextChecker类的实例来检查拼写错误的单词字符串(通常是文档中的文本)。


UITextPosition

一个UITextPosition对象代表一个文本容器中的位置,换句话说,它是一个到在文本显示的支持字符串的索引。


UITextRange

一个UITextRange对象代表一个字符在文本容器的范围,换句话说,它确定一个起始索引和结束索引一个字符串,支持一个文本输入对象。


UITouch

一个UITouch对象表示存在一个特定事件的屏幕上用手指或运动。你可以通过UIEvent对象传递到事件处理响应对象UITouch对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容