因为MyLayout中的各种布局视图类其实都是从UIView派生的,因此MyLayout是完全可以和XIB以及SB混合使用的。...设置完毕后我们分别按顺序添加3个高度一致的子视图如下: ? 依次添加子视图 上面的中我们可以看出,我们并不需要为子视图设置任何附加的约束,我们也没有为子视图设置扩展属性。我们只是按顺序添加上去。...布局运行结果 从上面的例子里面我们可以看出MyLayout是可以完全和XIB以及SB无缝结合的,我们在没有任何编码的情况下,通过几个简单属性的设置就实现了三个子视图的垂直高度均分以及宽度和布局视图相等以及每个子视图之间间隔...我们将上面例子中的中间UILabel改为一个水平线性布局(需要注意的是在放置时需要将三个子视图的frame的高度设置为一致,这个gravity属性拉伸才能得到相同的高度。)。...而水平线性布局则有2个子视图: ? 布局套布局 上图中我将中间的视图的UIView类改为了MyLinearLayout。
过往的尝试: 基于Xib的视图模块化....* 注意: 对于可动态确定布局的部分,如tableView中的cell,直接自行从xib初始化即可,不必继承于 MCComponent. */ @interface MCComponent :...子视图对应的属性,模块中应有属性与其对应,且可通过此属性访问对应的子视图. extern const NSString * YFViewComponentSubViewHolderWidthKey...子视图的高度. extern const NSString * YFViewComponentSubViewHolderRightKey; //!...子视图的底部边距值(bottom). @interface YFViewComponent : UIView /** * 子视图配置信息.
周围的四条虚线分别代表子控件距离父控件上、下、左、右之间的距离关系/或者叫约束关系,周围的四条虚线所包围的小方块代表子视图,小方块内部的两条带双向箭头的线分别代表子控件的宽度和高度。...当我们点击周围四条虚线时,虚线会变成实线,代表子控件和父控件在这个方向上的间距被固定了。当我们点击子视图内部的虚线时,同样也变为实线,代表子视图的宽度或者高度被固定了。...UIView有一个autoresizingMask属性,可以通过该属性来约束父子视图之前的位置关系,并且UIView还有一个BOOL类型的autoresizesSubviews属性,默认为YES,代表父控件会跟随子控件尺寸的变化而变化...具有相同的意义。...父控件随子控件变化而变化 如果希望父控件随子控件(UILabel/UIView)高度的变化而变化,就不要给父控件添加高度约束,只需要子控和向父控件在垂直方向上添加约束,这样子控件高度改变,父控件高度也会随之改变
上的title颜色和大小 7.统一收起键盘 8.导入自定义字体库 9.动态方法的动态执行 10.isKindOfClass和isMemberOfClass的区别 11.Label字体大小 12.为UIView...32、判断一个view是否为另一个view的子视图,或者是子试图的子试图。...不是禁止,而是暂时停止滚动) 45、使用xib设置UIView的边框、圆角 46、将一个xib添加到另外一个xib上 47、处理字符串,使其首字母大写 48、获取字符串中的数字 49、自动搜索功能,用户连续输入的时候不搜索...,或者是子试图的子试图。...image 46、将一个xib添加到另外一个xib上 // 假设你的自定义view名字为CustomView,你需要在CustomView.m中重写 `- (instancetype)initWithCoder
并提供了视图隐藏和显示时会自动激发布局、布局视图的高度自适应(UITableviewCell动态高度)、标签云实现、左右内容宽度自适应、按比例分配尺寸和间距、整体停靠控制等等各种强大的功能。...应用场景 举例下面一个应用场景: 有一个容器视图S的宽度是100而高度则是由四个从上到下依次排列的子视图A,B,C,D的高度总和。...视图A的左边距占用父视图宽度的20%,而右边距则占用父视图宽度的30%,高度则等于自身的宽度。 视图B的左边距是40,宽度则占用父视图的剩余宽度,高度是40。...视图C的宽度占用父视图的所有宽度,高度是40。 视图D的右边距是20,宽度是父视图宽度的50%,高度是40。 最终的效果图如下: !...表格布局是一种里面的子视图可以像表格一样多行多列排列的布局视图。子视图添加到表格布局视图前必须先要建立并添加行视图,然后再将子视图添加到行视图里面。
通过加载xib文件来创建UIViewController的view 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性 默认不用实现...4、viewWillLayoutSubviews 即将开始子视图位置布局 5、ViewDidLayoutSubviews 用于通知视图的位置布局已经完成 6、ViewDidAppear 当viewWillAppear...从继承关系来看,UIWindow继承自UIView,所以UIWindow除了具有UIView的所有功能之外,还增加了一些特有的属性和方法,而我们最常用的方法,就是在App刚启动时,调用UIWindow的...2、UIWindow的主要作用有: 1.作为UIView的最顶层容器,包含应用显示所有的UIView; 2.传递触摸消息和键盘事件给UIView; 把view添加到uiwindow 3、把view...添加到uiwindow上面 (1)直接将控制器的view添加到UIWindow中,并不理会它对应的控制器 [self.window addsubview:vc.view]; (2)设置uiwindow
加载XIB,只需要在第一个参数传入 XIB 的文件名,注意:没有扩展名 方法1,iOS 3.0 的方法 UIView *appView = [[NSBundle mainBundle] loadNibNamed...UIView *appView = [nib instantiateWithOwner:nil options:nil].lastObject; 6-应用管理-管理XIB的类 管理xib的类一般做两个事件...[i]; //设置frame xib.frame = CGRectMake(appX, appY, appW, appH); //把appView添加到控制器的view...- 在.h 里面有一个用来接收模型类型的属性 - 在.m 里面应该有需要显示值的子控件 - 重写set模型的方法,先模拟系统的_xx=xx,把数据放在子控件当中 ### 8.3.3 作为controller...- 根据view提供的方法添加到视图上(c不关心view具体是如何创建的),并且,把解析的模型数据复制给view.h里面用来接收模型类型的属性
- C 类, 这些类用于保存 处理 数据; -- View 视图 : 使用 Interface Builder 创建的视图组件, 如 xib, storyboard 后缀的界面设计文件; -- Controller...或 关闭后, 回调该方法; -- viewWillLayoutSubviews 方法 : 视图将要排列其子视图时, 需要回调的方法; -- viewDidLayoutSubviews 方法 : 视图已经排列好其子视图后...动态添加删除组件 (1) 代码示例 动态添加删除组件代码示例 : -- 创建文件 : 创建 Single View Application; -- 工程文件显示 : 只需要修改 OCViewController.m...自定义 UI 控件 (1) 自定义组件简介 自定义组件简介 : -- UIView 基类 : 所有的 UI 控件都继承了 UIView 基类, UI 组件在 UIView 提供的空白区域上绘制具体的细节...: 添加完子控件后回调的方法; -- "willRemoveSubview : " 方法 : 将要删除子控件时, 回调该方法; -- "didMoveToSuperview : " 方法 : 把控件添加到父控件完成时
Fill Spacing:该属性会保持子视图的宽高,所有子视图中间的间隔保持一致。 Fill Center: 该属性是控制所有子视图的中心之间的距离保持一致。...StackViewDemo 场景:动态Tab,可以展示2个也可以三个。 ? 全部代码和布局如下图: ? 2....应用Demo: 制作一个可以动态修改Raduis属性,即可显示的Demo。 ?...didSet{ self.layer.cornerRadius = myRaduis } } } # 视图复用 1.自定义Xib View复用 Xcode...(coder: NSCoder)初始化方法中,添加xib视图。 import UIKit class SbView: UIView { required init?
设置圆角的效果图: 方法一:使用代码设置 //第一步设置圆角的大小 //如果是设置为视图的高度的一半,则为半圆弧 _circleBtn.layer.cornerRadius = 5; //第二部:设置剪切..._circleBtn.layer.masksToBounds =YES; //CALayer的setMaskToBounds属性和UIView的clipsToBounds属性一样 //设置其布尔值,决定视图的显示范围...,当选择YES的时候,剪裁掉超出父视图的子视图部分,选择NO不裁剪子视图 方法二:使用xib设置 我们在选中xib中的按钮视图,在User Defined Runtime Attributes中,如图添加设置属性...,同样达到了设置圆角的目的
5.请说明并比较以下关键词:Frame, Bounds, Center 关键词: #坐标 #父视图 Frame 是指当前视图(View)相对于父视图的平面坐标系统中的位置和大小。...Bounds 是指当前视图相对于自己的平面坐标系统中的位置和大小。 Center 是一个 CGPoint,指当前视图在父视图的平面坐标系统中最中间位置点 。...,一直到完成所有子视图的布局。...这个方法主要在屏幕旋转、滑动或触摸界面、子视图修改时被触发。...iPhone X 中一般是指扣除了顶部的 status bar(高度为20)、navigation bar(高度为44)和底部的 home indicator 区域(高度为34),这样应用的内容不会被刘海挡住或是影响底部手势操作
一.AutoResizing 我们在使用AutoResizing进行布局的时候,其主要思想就是设置子视图跟随父视图的frame变化而变化。具体的情况,我们可以设置左跟随,右跟随等等。...= [UIColor orangeColor]; [self.view addSubview:superView]; //子视图 UIView *subView = [[UIView alloc] initWithFrame...(0, 0,200 , 200); 以上代码中我们设置了子视图的宽度随父视图的变化而改变,其效果图如下: ?...屏幕快照 2016-09-18 下午4.53.23.png 我们可以看到,图中的子视图的宽度也随着父视图的宽度增加到了二倍。这就是AutoResizing的一个最简单的应用。...中使用AutoResizing,我们需要进行如下的操作,在当我们创建xib视图的时候,我们在XIB里选中一个UIView, 1.进入file Inspector, 在这里取消AutoLayout属性,
UIWindow是一种特殊的UIView,通常在一个app中至少有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view, 最后将控制器的view...如果也不是从Xib加载的控制器.那么它就会创建一个空的UIView.设为当前控制器的View. 注意点: 一旦重写了loadView,表示需要自己创建控制器的View....一个专门存放栈顶控制器View的View 一个导航条,导航条的高度为44,Y值为20 14.导航push做了哪些事情?...做tableView的时候一定要用真机. 如果是从网络加载数据,一定要放到子线程(异步加载)当中做....加载完毕的数据一定做本地缓存. cell当中不要动态的添加子控件.一般都在创建时,就把要出现的Cell给添加进去,暂时不要显示的,可隐藏. 尽量减少Cell内部子控件的个数.
比如一些界面中有父视图的尺寸由子视图的尺寸来确定的;还比如UIScrollView中为了能实现滚动需要根据添加到里面的子视图来调整contentSize的尺寸;又比如某些UITableViewCell中的高度是动态的...,其高度尺寸是由里面的子视图来确定的。...中去,然后再将所有子视图添加到容器视图中去。...在上面的第1节中有介绍如何将一个容器视图的尺寸设置为自适应,而一般情况下在编写UITableViewCell的布局代码时,都将所有的子视图添加到contentView这个视图中,因此要实现UITableViewCell...这里只介绍将MyLayout&TangramKit的布局视图加入到AutoLayout布局体系中去的一些方法。 1.将布局视图添加到非布局父视图中 因为布局视图也是一个视图,都是从UIView派生。
使用了这么久, 对于父试图是 Button / UITextFeild等非UIView的直接子类,布局其子视图时,这里面的约束是不生效的。...我们可以在XIB、StoryBoard中通过拉线的形式给控件视图添加布局约束,通过苹果强大的可视化界 IB(Interface Builder)我们能够轻松的使用AutoLayout完成界面视图的布局。...2、实现了UIView内子视图的自动布局; 3、实现了UIScrollView内容高度根据内部子视图的内容高度动态设置; 4、实现了一个UITableView有多个不同Cell的时候,所有cell高度自适应...当父试图的高度没有定义的时候,需要使用一下方法来自动布局,并且这个时候不可以再以父试图的底为标准来设置其内部子视图,这是一种【从里到外】的布局思路,cell的自适应高度也是这种思路;平时我们的思路都是一种...实现了UIScrollView可滚动高度根据内部子视图的内容高度动态设置 /** 设置scrollview内容自适应,第一个参数为作为底部的子视图,第二个参数为到sc底部的间距。
1.UIWindow简介 UIWindow是一种特殊的UIView,通常在一个app中至少会有一个UIWindow。...iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。...状态栏和键盘都是特殊的UIWindow。 那么UIWindow是如何将View显示到屏幕上的呢 这里有三个重要的对象UIScreen,UIWindow,UIView。...UIScreen对象识别物理屏幕连接到设备 UIWindow对象提供绘画支持给屏幕 UIView执行绘画,当窗口要显示内容的时候,UIView绘画出他们的内容并附加到窗口上。...[self.window addsubview:rootVc.view];可直接将控制器的view添加到UIWindow中,并不理会它对应的控制器,但是这种方法违背了MVC原则,当我们需要处理一些业务逻辑的时候就很麻烦了
UIViewController 的生命周期 // 非storyBoard(xib或非xib)都走这个方法 - (instancetype)initWithNibName:(NSString *)nibNameOrNil...viewDidAppear 在view被添加到视图层级中以及多视图,上下级视图切换时调用这个方法,在这里可以对正在显示的视图做进一步的设置。...(void)awakeFromNib { [super awakeFromNib]; NSLog(@"%s",__func__); } // 如果在initWithFrame中添加子视图会调用两次...给 view 添加子视图时 2017-11-06 10:45:47.749310+0800 iOSLife[17198:14898063] -[View initWithFrame:] 2017-11-...如果有多个子视图,willRemoveSubview 会循环执行,直到移除所有子视图。
强引用着 UIview , UIview 强引用着 UIbutton , IBoutlet 连线到控制器的. m 或者. h 中作为视图的属性时用 weak 修饰就可以了, (觉得用 strong 修饰也可以但是没有必要...) 添加到子控件也是强引用: UIbutton 就是添加到了 UIviewController 的 view 上 8 预处 指令define 声明 个常数, 以表明 中有多 少秒(忽 闰 问题...尽量减少不必要的透明 View。 尽量避免渐变效果、图片拉伸和离屏渲染。 当不同的行的高度不一样时,尽量缓存它们的高度值。...讲 讲你的使 场景以及使 时的注意事项 1.给扩展添加属性 2.替换系统方法的的实现 22.讲讲iOS事件响应链的原理 1、响应者链通常是由视图(UIView)构成的; 2、一个视图的下一个响应者是它视图控制器...SubLayers,View 内部有 SubViews.但是 Layer 比 View 多了个AnchorPoint 创建隐式动画 绘制边框圆角 25.如何处理UITableVier 中Cell 动态计算高度的问题
比如,给xib中的某个子控件A设置了宽度和高度、距离父控件上下左右之间的间距,就相当于给这个控件添加了6个约束,也就产生了6个约束对象 约束错误警告 红色箭头,代表约束错误,一般是缺少约束或约束冲突(例如...,但并不影响其真实效果,也不会报错 注意:约束有错误,不代表运行会错误,约束错误同样可以运行 约束的规则 相对于父视图的约束,添加到父视图上 对于两个同层级 view 之间的约束关系,添加到它们的父 view...上 相对于另一个控件的约束,添加到其共有的父视图上 对于两个不同层级 view 之间的约束关系,添加到他们最近的共同父 view 上 跨层级的约束,添加到其最上层的父视图上...对于有层次关系的两个 view 之间的约束关系,添加到层次较高的父 view 上 自身的宽高等约束,添加到自身视图上 特殊控件的约束 UILabel默认内容的显示方式是垂直居中的...默认为当前设置方向最近的一个VIew,且没有覆盖遮挡的视图 注意:上下左右的间距和控件的宽度、高度配合使用,尽量不要冲突; 例如:375的屏幕宽度,你不能距离左边200,距离右边200,还要控件宽度100
当然你可以去掉Constrain to margin的勾选,不过这要是一个一个去掉勾选也是挺烦的事情,而且对旧项目来说这可能又会导致原来布局好的视图产生变动。...添加第三方字体 把字体ttf文件像普通文件加入到项目中,在xib或storyboard中就可以直接使用新字体了 属性设置 但是很多属性的设置 在xib中是不能完全自定义的,作为一个喜欢用xib这种方式的码客来说...,当然能最大限度的使用xib可自定义的属性当然是极好的,下面就说一下一些不常用的从xib中可设置的属性 这些属性的设置在右面设置菜单的第三个选项卡的User Defined Runtime Attributes...OC下的实现方式(扩展) UIView+Border&CornerRadius.h #import IB_DESIGNABLE // 动态刷新 @interface...IB_DESIGNABLE // 动态刷新 @interface UIViewBorderCornerRadius : UIView // 注意: 加上IBInspectable就可以可视化显示相关的属性哦
领取专属 10元无门槛券
手把手带您无忧上云