在 SQL 中创建视图(VIEW)可以使用 CREATE VIEW 语句。...语法如下: CREATE VIEW view_name AS SELECT column1, column2, … FROM table_name WHERE condition; 视图是一个虚拟的表...与实际的表不同,视图并不存储数据,而是在查询时动态生成。视图可以根据现有表中的数据创建,并且可以对其进行查询、插入、更新和删除操作。...视图的作用和优势如下: 数据安全性:视图可以限制用户只能查询特定的列和行,从而保护敏感数据的安全性。 数据简化:通过创建视图,可以隐藏底层表的复杂性,并提供简化的数据访问方式。...数据一致性:视图可以将多个表结合起来,使数据在逻辑上保持一致性,方便进行查询和分析。 数据抽象:视图可以将复杂的查询逻辑封装起来,为用户提供简单、易懂的接口。
在Xcode左侧的导航栏中点击MainWindow.xib,进入Interface Builder编辑模式。...,在右侧的识别检查器(Identity Inspector)中,展开“Class”下拉列表,选择其中的“HomeViewController”。...图片向视图中添加图片和文字要通过Interface Builder向视图当中添加图片和文字,我们首先需要创建一些对应着不同类型内容的“容器”,也就是“Image View”与“Text View”。...确保在Xcode左侧的导航栏里选中HomeViewController.xib文件,在文档结构列表中选择“View”对象,然后在右侧的属性检查器(Attributes inspector)中找到最上面的...总结本文确实涵盖了不少方面的内容,从Xcode的界面介绍、基本操作,到在Interface Builder中创建界面,以及实际代码的编写。
我们的工程中需要一些额外的视图。(为了避免太多代码。我们将使用Interface Builder来拜访他们的位置,如果你愿意还是可以用代码的方式来实现的)。...图3.8显示了在Interface Builder内的一对视图,正如你所见,首先出现在视图层级绿色的视图被绘制在红色视图的后面。...我们将代码演示一下这个过程,创建一个简单的项目,通过图层的mask属性来作用于图片之上。为了简便一些,我们用Interface Builder来创建一个包含UIImageView的图片图层。...,如果用一个函数封装这些操作的确会更加方便,但仍然有限制(例如,你不能在Interface Builder中摆放视图),这里有一个更好的方法。 ...在这个例子中,我们用Interface Builder来构建立方体的面(图5.19),我们当然可以用代码来写,但是用Interface Builder的好处是可以方便的在每一个面上添加子视图。
After you add the custom view to Interface Builder (by setting the custom class of the view in the inspector...其大意就是说,“所见即所得”的思想,我们可以将自定义的代码实时渲染到Interface Builder中。...我们通过@IBDesignable告诉Interface Builder这个类可以实时渲染到界面中,无论我们drawRect里面多么复杂,自定义有多复杂,Xib / Storyboard都可以把它编译出来...用代码或者SB上面拖一个View,这个时候我们需要指定这个类是什么,这个毋庸置疑,是绝对没有问题的。SB上面拖的View的class肯定要选择我们自定义的这个View。...由于现在我们自定义的class有了接管整个view的绘制权利,那么我们就应该在initWithCoder中loadNibName,把整个View在初始化的时候load出来。
在第一篇文章第一篇文章中,你已经学到了Interface Builder的基本用法来创建和连线多个控制器,以及使用在storyboard中可以通过直接创建自定义的tableViewCell....在Add Player控制器里选择table view,然后在Attributes inspector里把Content改为Static Cells.把Style从Plain改为Grouped并且将Sections...选择Table View最顶部的Section(从Document Outline).在Attributes inspector里,把Header属性的值设置Player Name....还有一件关于静态单元格的事情:它们只工作在UITableViewController里.即使Interface Builder会让你添加它们到一个内置UIViewController的Table View...)滑动它们在Interface Builder里.这也许不会立即就可以看见,但是它确实起作用. ---- 你不能避免写代码,甚至是使用静态单元格的table view也是如此.当你拖拽textField
从Interface Builder中,您可以将View添加到界面,将这些view排列到层次结构中,配置每个view的设置,并将与view相关的行为连接到您的代码。...您还可以使用“Inspector”窗口在Interface Builder中配置其中的许多属性。 属性 用处 alpha, hidden, opaque 这些属性影响view的不透明度。...定位View Hierarchy中的view 在view层次结构中定位view有两种方法: 将指针存储在适当位置的任何相关view中,例如拥有view的VC中。...如果使用Interface Builder创建view,则可以使用outlet将nib文件中的对象连接到另一个对象。对于以编程方式创建的view,可以在私有成员变量中存储对这些view的引用。...在界面构建器中,边缘指示符的存在意味着边距具有固定大小,并且缺少指示符意味着边距具有灵活的大小。 幸运的是,Interface Builder提供了一个动画来展示自动修改行为对你的view的影响。
为方便对CALayer的学习,特记录以下内容,整理自ios核心动画高级技巧 · GitBook (墙裂推荐阅读此翻译文档) contents 属性 这个属性的类型被定义为id(这是由于MacOSX...历史原因造成的,因为在Mac中这个属性对CGImage和NSImage都起作用),意味着它可以时任何对象类型,但实际上,如果给contents赋值不是CGImageRef,得到的都将是空白图片。...一样,目的是为了处理内容在图层的边界内如何对齐。...contentsScale maskToBounds 默认情况下,UIView会绘制超过边界的内容或子视图,CALayer也一样。...它与UIImage的-resizableImageWithCapInsets:方法相似。 ? contentsCenter 这个属性是可以在Interface Builder 里面进行配置的。 ?
[1240] Size Classes 具体使用 对屏幕进行分类 UIView和CALayer是什么关系?...,进行各种渲染操作 显示树,这棵树的内容是当前正被显示在屏幕上的内容 这三棵树的逻辑结构都是一样的,区别只有各自的属性 loadView的作用?...User Defined Runtime Attributes是一个不被看重但功能非常强大的的特性,它能够通过KVC的方式配置一些你在interface builder中不能配置的属性 当你希望在IB中作尽可能多得事情...addSubview:imageView]; 使用drawRect有什么影响?...当真实图片被加载出来后在替换占位图片 加载图片的过程大致如下: 首先会在 SDWebImageCache 中寻找图片是否有对应的缓存, 它会以url 作为数据的索引先在内存中寻找是否有对应的缓存 如果缓存未找到就会利用通过
UIView,通常在一个app中只会有一个keyUIWindow。...iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了 主要作用是提供一个区域用来显示...CALayer @interface CALayer : NSObject 直接继承自NSObject,所以不能响应事件 其实就是一个图层...,UIView之所以能显示在屏幕上,主要是它内部有一个CALayer对象。...在创建UIView时,它内部会自动创建一个图层,当UIView需要显示在屏幕上的时候,会调用drawRect:方法进行绘图,并且会将所有内容绘制到自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,这样完成
但是为什么iOS要基于UIView和CALayer提供两个平行的层级关系呢?为什么不用一个简单的层级来处理所有的事情呢?原因在于要做职责分离,这样能避免很多重复代码。...在iOS和MacOS两个平台上,事件和用户交互有很多地方的不同,基于多点触控的用户界面和基于鼠标键盘有着本质的区别,这就是为什么iOS有UIKit和UIView,而MacOS有APPKit和NSView...contents之所以被定义为 id 类型,是因为在MacOS中,该属性对CGImage和NSImage类型都起作用。...上面我们通过CALayer在一个普通的UIView中展示了一张图片。...CALayer中也有一个对应的属性,叫做masksToBounds,它的作用跟UIView的clipsToBounds属性是一样的。
利用 IB 学习控件可以达到事半功倍的效果 Interface Builder 的缺点 IB 的执行效率没有纯代码高 使用 IB 开发的过程中容易出现一些小问题 有一定的学习成本 文件易冲突 没有代码表达清晰...不利于代码的封闭和工程架构的组织 Interface Builder 学习的特点 简单,容易入门 容易犯错误 有很多的“坑”,需要积累属于自己的经验 Interface Builder 的发展 xib...Show the Identity inspector 中设置 Class 标签的值为自定义的 View 的类名。...第4章 在 Interface Builder 中使用 Auto Layout ---- 在 IB 中使用 Auto Layout 的优缺点 设置约束十分简单 如果约束不恰当,IB 提供很好的实时反馈...} } } 第7章 在 Interface Builder 开发中的技巧和 Bug ---- 调整 View 的尺寸,使它与显示内容的尺寸相适应 comment + = 查看各个 View 之间的距离
小编有个自己学习交流群681503716(验证编号:大鲨)在iOS学习道路上的小伙伴可以加一下哦~ 首先我们打开Main.storyboard,此时可以看到一个Interface Builder界面设计器出现在我们眼前...IBOutlet:IBOutlet没有做任何操作,它的唯一作用就是告诉Interface Builder这个属性可以被关联到其中某个控件(在代码中可以看到代码前面多了空心圆点)。...IBAction:其实就是void,只是当你定义为IBAction在Interface Builder中可以关联到某个控件的事件方法(后面的关联操作将会看到,而且我们在代码中也可以看到代码前面多了空心圆点...(在Interface Builder中点击左下角“Show Document outline”显示控件结构树,选中相应的控件按住Ctrl键拖拽到代码中的属性或方法上) e.gif 3....(在Interface Builder中点击左下角Show Document outline显示控件结构树,选中相应的控件右键拖拽到代码中的属性或方法上) 5.对于前面几种方法其实我们还可以直接从代码拖拽到控件上面
你會學到通用storyboards、size classes、layout、自定義字體,還有經過改良的Interface Builder。...選擇image view,打開Size Inspector。可以看到對這個view起作用的所有約束: ?...然而,在實踐中,經常會有其他元素在view裡面,導致很難選中要拖拽的view。而使用document outline,則簡單得多。...Interface Builder會自動更新,顯示修改後的效果: ? 這樣看起來好一點了,不過Cupertino這個label被裁切了一點。...看看Interface Builder的幕布,現在感覺好多了: ? 在Xcode預覽非常方便,但是我們也要在iPhone的屏幕上看看效果是否OK: ? ? 恭喜!
一、理论概述 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设置CALayer在父层中的位置...为(0.5,0.5) 红色图层的anchorPoint为(1,1) 红色图层的anchorPoint为(0.5,0) position和anchorPoint 添加一个红色图层到绿色图层上,红色图层显示到什么位置...Layer(根层) 所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画 什么是隐式动画?...修改这个属性会产生缩放动画 backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画 position:用于设置CALayer的位置。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
怎么说尼,笔者认为这个还是比较有用滴,为什么有用尼? 因为在Xcode断点调试的时候, 在控制台输入 po self.view.frame 或者 po id 类型的时候就死翘翘了。 ...过程中,按下底部的Debug View Hierarchy 按钮,或者从菜单中选择Debug > View Debugging > Capture View Hierarchy 来启动视图调试: ...事件的block回调 * * @param viewControllerActionBlock block的参数有view本身,状态码,键值对。 ...事件的block回调 * * @param viewControllerActionBlock block的参数有view本身,状态码,键值对。...代码基础 5.1 数据类型相关 5.1.1 Objective-C中的instancetype和id区别 instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!
Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。...于是这个树形成了UIKit以及在iOS应用程序当中你所能在屏幕上看见的一切的基础。 认识CALayer 创建Layer和Layer的基本几个简单的属性,不好说明的以后会单独拿出来做例子。...All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation...yellowLayer.backgroundColor = [UIColor yellowColor].CGColor; //设置圆角 yellowLayer.cornerRadius = 30; //默认四个圆角,你也可以选择圆角个数...图层有双面,是否都显示,设置NO意思背面看不到。下图是两个图层分别设置doubleSided为NO和YES翻转180°的效果。
但是虚拟属性到底是什么呢? 考虑一个旋转的动画:如果想要对一个物体做旋转的动画,那就需要作用于transform属性,因为CALayer没有显式提供角度或者方向之类的属性。...对图层树的动画 CATransition并不作用于指定的图层属性,这就是说你可以在即使不能准确得知改变了什么的情况下对图层做动画,例如,在不知道UITableView哪一行被添加或者删除的情况下,直接就可以平滑地刷新它...CALayer有一个-renderInContext:方法,可以通过把它绘制到Core Graphics的上下文中捕获当前内容的图片,然后在另外的视图中显示出来。...那么你会疑惑为什么这不是默认的选择,实际上当使用UIView的动画方法时,他的确是默认的,但当创建CAAnimation的时候,就需要手动设置它了。...在下一章中,我们将要研究基于定时器的动画--另一个给我们对动画更多控制的选择,并且实现对动画的实时操纵。
CALayer 视图结构类似 UIView 的子 View 树形结构,它们分别可以有自己的 SubView 和 SubLayer,可以向它的 RootLayer 上添加子 layer,来完成一些页面效果...尽管两种情况中都有 layer,但是当 layer 附加在 view 上时,它的默认的隐式动画的 layer 行为就不起作用了,那不显示动画的原因是什么呢?...这里说的 view 的 layer 是指 view 的 RootLayer,对于后添加上去的子 Layer 还是会有隐式动画的。 页面渲染流程 那么为什么 CALayer 可以呈现可视化内容呢?...这是因为在 Mac OS 系统中,该属性对 CGImage 和 NSImage 类型的值都起作用,而在 iOS 系统中,该属性只对 CGImage 起作用。...同时这也解释了为什么通过 AutoLayout 设置约束后修改 frame 属性来改变位置和尺寸不会起作用的原因。
UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等 等,实际上内部都是在访问它所包含的CALayer的相关属性。...2.UIView有个layer属性,可以返回它的主CALayer实例,UIView有一个layerClass方法,返回主layer所使用的 类,UIView的子类,可以通过重载这个方法,来让UIView...3.UIView的CALayer类似UIView的子View树形结构,也可以向它的layer上添加子layer,来完成某些特殊的表 示。...如果你用Interface Builder来创建界面,那么不应该重载这个方法。 如果你想自己创建view对象,那么可以重载这个方法。此时你需要自己给view属性赋值。...根据上面的文档可以知道,有两种情况: 1、如果你用了nib文件,重载这个方法就没有太大意义。因为loadView的作用就是加载nib。如果你重载了这个方法不调用super,那么nib文件就不会被加载。
); //contentsGravity的目的是为了决定内容在图层的边界中怎么对齐,我们将使用kCAGravityResizeAspect,它的效果等同于UIViewContentModeScaleAspectFit...imageLayer.contentsRect = CGRectMake(0, 0, 0.5, 0.5); //contentsCenter其实是一个CGRect,它定义了一个固定的边框和一个在图层上可拉伸的区域...controller. } */ @end Core Graphics绘制寄宿图 CALayer有一个可选的delegate属性,实现了CALayerDelegate协议,当CALayer...需要一个内容特定的信息时,就会从协议中请求。...)ctx; 在调用这个方法之前,CALayer创建了一个合适尺寸的空寄宿图(尺寸由bounds和contentsScale决定)和一个Core Graphics的绘制上下文环境,为绘制寄宿图做准备
领取专属 10元无门槛券
手把手带您无忧上云