() xib 这种方式本质是 xib 创建 UIView,然后让这个 UIView 成为 UIViewController 的默认 View。...,因为这种方式还需要自己处理 2 件事: (1)将 xib 文件 的File’s Owner的类绑定为 UIViewController。...(2)将File’s Owner的view属性设置为xib文件(拽线设置即可)。...手动型 Segue 从当前 UIViewController 拽线到另一个 UIViewController,需要给这根线设置identifier。...案例 storyboard 使用。 纯代码使用。 自定义使用。 UITabBarController 标签栏控制器。
二、生命周期 0、init UIViewController-init不要出现创建view的代码。良好的设计,在init里应该只有相关数据的初始化,而且这些数据都是比较关键的数据。...1、loadView loadView方法是用来负责创建UIViewController的view 首先,[super loadView]会先去查找与UIViewController相关联的xib文件,...通过加载xib文件来创建UIViewController的view 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性 默认不用实现...从继承关系来看,UIWindow继承自UIView,所以UIWindow除了具有UIView的所有功能之外,还增加了一些特有的属性和方法,而我们最常用的方法,就是在App刚启动时,调用UIWindow的...2、UIWindow的主要作用有: 1.作为UIView的最顶层容器,包含应用显示所有的UIView; 2.传递触摸消息和键盘事件给UIView; 把view添加到uiwindow 3、把view
连接方法 : -- 打开辅助编辑器 : -- 辅助编辑器界面 : 左边显示 界面设计文件, 右边显示 UIViewController 类; -- 拖动控件到 UIViewController...UILabel 控件从布局中删除 [[self.labels lastObject] removeFromSuperview]; // 将 UILabel 控件从集合中删除...自定义 UI 控件 (1) 自定义组件简介 自定义组件简介 : -- UIView 基类 : 所有的 UI 控件都继承了 UIView 基类, UI 组件在 UIView 提供的空白区域上绘制具体的细节...; -- 适用情况 : 在 IOS 系统提供的组件不满足需求时, 就需要自定义组件; (2) UIView 基类常用方法 UIView 基类常用方法简介 : -- "initWithFrame :"..., 使用 command + option + 3 打开身份检查器, 由身份检查器上可以看到 其 Custom Class 属性为 UIView, 因此该界面的根控件时 UIView; -- 创建自定义类
关联 xib 文件与源文件 关联 xib 文件与 UIView 子类的源文件 新建一个空的xib文件,拖一个UIView上去 新建一个继承自UIView的源文件 选中xib文件里的View,把class...mvc 理解 File's Owner 关联 xib 文件与 UIViewController 子类的源文件 自定义一个 VC 的 View 的两种方法 在 IB 文件中选中 VC 所在的 View,在...既可以与 UIView 关联,也可以与 UIViewController 关联,也可以同时关联 UIView 与 UIViewController 使用 xib 通过 Bundle 方式加载 通过...UINib 方式加载 使用与UIView子类源文件关联的xib Bundle - (NSArray *)loadNibNamed:(NSString *)name...UIView view.addSubview(testView) } 使用与 UIViewController 子类源文件关联的 xib Demo HomeViewController.swift
* 使用方法: 在xib或storyboard中,将某一用于占位的view的 custom class 设为对一个的 component, 则初始化时,会自动使用此component对应的xib文件中的内容去替换对应位置...< 是否是测试.如果是,将优先使用 virtualModel来替换model.系统内部处理.默认为NO. /** * 初始化. * * 子类需要继承此方法,以完成自定义初始化操作....* * @param isFromXib 是否从xib或sb初始化此类. * * 注意: 无论此类是否从xib或sb初始化,组件内部都将从xib文件初始化.....此时应把XIB的File's Owder与自定义的MCComponent关联起来.按照以上步骤,即可实现图示效果....目前能得到的效果 视图基于 AutoLayout; 视图自动适配不同屏幕尺寸; 视图完全独立于数据与业务逻辑; 视图严肃仅与父视图有位置关系; 可以将视图模块的元素与模块同名属性自动关联; 仅需知道父视图的宽高
从语法上 说,UIViewController是视图控制器的父类。视图控制器类是没有可视化表示的抽象类,只有它管理的视图才提供可视画布。记住:1....UIView视图使用initWithFrame:初始化,而其UIViewController则使用init类方法直接初始化。3....UIViewController *aView = [[UIViewController alloc] initWithNibName:(*xib文件名*)]; [aNav pushViewController...•管理视图上显示的数据。 •设备方向变化,调整视图大小以适应屏幕。 •负责视图和模型之间的数据及请示的传递。 2....如果视图控制器也不处理该事件,则视图控制器会将数据传递给视图控制器视图的超类,一般是UIWindow.
9.动态方法的动态执行 10.isKindOfClass和isMemberOfClass的区别 11.Label字体大小 12.为UIView某个角添加圆角 13.将一个view放置在其兄弟视图的最上面...44、让正在滑动的scrollView停止滚动(不是禁止,而是暂时停止滚动) 45、使用xib设置UIView的边框、圆角 46、将一个xib添加到另外一个xib上 47、处理字符串,使其首字母大写...xib设置UIView的边框、圆角 ?...image 46、将一个xib添加到另外一个xib上 // 假设你的自定义view名字为CustomView,你需要在CustomView.m中重写 `- (instancetype)initWithCoder...将一个xib添加到另外一个xib上 47、处理字符串,使其首字母大写 NSString *str = @"abcdefghijklmn"; NSString *resultStr; if (str &&
1.UIWindow简介 UIWindow是一种特殊的UIView,通常在一个app中至少会有一个UIWindow。...iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就显示在屏幕上了。...那么UIWindow是如何将View显示到屏幕上的呢 这里有三个重要的对象UIScreen,UIWindow,UIView。...UIScreen对象识别物理屏幕连接到设备 UIWindow对象提供绘画支持给屏幕 UIView执行绘画,当窗口要显示内容的时候,UIView绘画出他们的内容并附加到窗口上。...当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给UIWindow,UIWindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转。
从纯代码UI -> 最初的Xib -> StoryBoard ,感受到UI的搭建也是逐渐可视化,简单化。我是一个可视乎开发的支持者,有一些朋友不喜欢,这个纯属个人爱好,风格不同。...约束:三个Button等宽等高,均匀分布到屏幕,关键点是Tab3的约束 优先级的作用简单总结一下:一个元素可以同时存在两个相同作用的约束,优先级必须有先后,当其中一个失效,另一个就会使用,这样当我们删除相关元素...这时候就会报,上文所说的错误,修改一个优先级即可,我们想让Label1拉伸,所有将Label2的抗拉伸优先级调高成252,同理你可以将Label1调成249。 ?...有时候我们想在XIb里直观修改Xib属性,但是Xcode并不全部提供属性修改,可以通过Keypath修改,但是键入太麻烦容易出错,所以可以通过IBInspectable添加自定义属性。...step2: 修改Cell 为想要的类型,然后复制Section Cell,修改数据,组合即可。
控制器View的创建 首先我们来看一下控制器view创建的流程图 控制器view加载.jpeg 从图中我们可以看出,在控制器view加载过程中有两个重要的方法loadView和viewDidLoad。...loadView方法 作用:loadView方法是用来负责创建UIViewController的view。...什么时候调用:每次访问UIViewController的view,当view为nil,就会调用loadView方法。...ViewController.m import "ViewController.h" @interface ViewController () @end @implementation ViewController // 自定义控制器的...view (void)loadView { NSLog(@"%s",func); UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen
为了良好的交互体验,相信大家在对待scrollView无数据时的提示页都会使用一些第三方来定制,最典型的就是使用DZNEmptyDataSet。...where Self : UIViewController { // 3、的实现的方法写在这里 } 3、定义功能方法 将scrollView传递进来,让我们定义的方法来暗地里做些操作 func...要明白这里的self指的是UIViewController,考虑到UIView的可能,这里我就让万物对象之父NSObject来遵守,并实现对应的数据源方法和代理方法 extension NSObject...,非常地恰巧,我们定义的方法lxf_EmptyDataSet需要外界将UIScrollView传递进来,在DZNEmptyDataSet的数据源方法和代理方法也有scrollView。...可以使用Cocoapods的方式来安装使用 pod 'LXFProtocolTool' 我也将 iOS - Swift 面向协议编程(二) 中提及的通过协议便捷加载xib的功能也集成了进来。
我们来看看三种方式的主要区别: 手写页面和逻辑代码 如果你的目的是写一些可以高度重用的控件提供给其他开发者使用,那毫无疑问最好的选择应该是使用代码来完成UIView的子类.这样进一步的修改和其他开发者在使用时...MVC:一般来说,单个的xib文件对应一个ViewController,而对于一些自定义的view,往往也会使用单个xib并从main bundle进行加载的方式来载入.IB帮助完成view的创建,布局和与...2,一般情况下, 程序都是写在Xcode默认的Main.storyboard里面,也可以自定义storyboard到相应的模块。 ?...因为在 Storyboard 里 View 之间的连线算法都是从 View 的右边缘出发,到另外一个 View 的左边缘结束,如果调转了,就会出现很多交叉的连线,让界面看起来很乱。...并且可以通过 Segue 来进行 View 之间的数据传递,统一规范 View 之间跳转的代码,让逻辑更清晰。 所以我们在写布局的时候尽量预览下实际效果。 ?
UIViewController 的生命周期 // 非storyBoard(xib或非xib)都走这个方法 - (instancetype)initWithNibName:(NSString *)nibNameOrNil...,执行关键数据初始化操作,非StoryBoard创建UIViewController都会调用这个方法。...initWithCoder: 如果使用StoryBoard进行视图管理,程序不会直接初始化一个UIViewController,StoryBoard会自动初始化或在segue被触发时自动初始化,因此方法...loadView 当执行到loadView方法时,如果视图控制器是通过nib创建,那么视图控制器已经从nib文件中被解档并创建好了,接下来任务就是对view进行初始化。...viewDidLoad 当loadView将view载入内存中,会进一步调用viewDidLoad方法来进行进一步设置。
,加载最主要的storyboard(有storyboard) 创建UIWindow 创建和设置UIWindow的rootViewController 显示窗口 窗口(UIWindow) 一种特殊的UIView...的File'owner为控制器 UIViewController *rootVc = [[UIViewController alloc] initWithNibName:@"VC" bundle...控制器View的生命周期 loadView viewDidLoad(view加载完毕) viewWillAppear(view即将显示到window) viewDidAppear(view显示完毕,已经显示到窗口...) viewWillDisappear(view即将从window上移除,即将看不到) viewDidDisappear(view从window上完全移除) 当有内存警告时 didReceiveMemoryWarning...Games should use this method to pause the game. } // 当应用程序进入后台的时候调用 // 保存一些数据 - (void)applicationDidEnterBackground
启动页 640*960 Default@2x.png iphone5 Default-568h@2x.png 6.icon需要有29*29 和 58*58 7.模拟器快捷键: 8.沙盒:IOS将各个...是视图的基类 UIViewController是视图控制器的基类 12.每个应用至少一个窗口,UIWindow继承UIView 自动创建(xcode4.5之后) 13.UIScreen对象可以充当...addTarget:self action:@selector(alertUser) forControlEvents:UIControlEventTouchUpInside]; 16.Ui创建两种方式 xib...UIView SubView *_view = (SubView *)[self.window viewWithTag:110]; 这样view才能使用subview中的方法 这样我们自定义的UIView...需要重载dealloc方法进行内存释放 22坐标系统变换(动画使用) 视图缩放 UIView *_view = [self.window viewWithTag:110]; _view.transform
12 粘贴代码格式化 有时候从别的地方粘贴代码到项目中时缩进不对,可以使用control + I进行格式化。 Xcode 14 补齐右侧}时,会自动格式化{}包含的代码块。...在 storyboard 或者 xib 中将一个 UIView 拖拽到另一个 UIView 时会默认成为其子 view,如果按住command进行拖拽即可成为平级关系。...也可以使用control + 2或control + 3可以将这些文件显示为菜单进行浏览。...18 视图测试 在 View debugging 时,选择某个 UIView,然后使用快捷键command + shift + D可以快速在左侧的调试导航器中定位该 UIView。...查看某个 UIViewController 的视图层次结构。
触摸事件传递与响应 当触摸事件产生以后,App 里有很多的 UIView 或 UIViewController,到底应该谁去响应这个事件呢?...如果能,那么 UIWindow 会从后往前遍历自己的子 UIView,将事件向下传递。...hitTest方法将事件传递给其子 UIView,这样循环寻找与传递下去,直到获取最佳响应者。...这样可以让触摸事件传递到凸起按钮,并让其成为最佳响应者。 事件响应 当找到最合适的响应者之后,响应者对于触摸事件,有以下 3 种操作: (1)不拦截,事件会沿着默认的响应链自动传递。...使用步骤 创建手势实例,指定回调方法,当手势开始,改变、或结束时,回调方法被调用。 将手势添加到需要的 UIView 上。
UIViewController的生命周期及iOS程序执行顺序 当一个视图控制器被创建,并在屏幕上显示的时候。...代码的执行顺序 1、alloc 创建对象,分配空间 2、init (initWithNibName) 初始化对象,初始化数据 3、loadView从nib载入视图,通常这一步不需要去干涉。...除非你没有使用xib文件创建视图 4、viewDidLoad载入完成,可以进行自定义数据以及动态创建其他控件 5、viewWillAppear视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了 6、...1)- (void)viewDidLoad; 一个APP在载入时会先通过调用loadView方法或者载入IB中创建的初始界面的方法,将视图载入到内存中。...默认的实现是检查当前控制器的view是否在使用。
3》loadView方法运行例如以下操作: 假设你重载了这种方法,则必须创建必要的view而且将一个非nil值传给UIViewController的view属性。...假设你没有重载这个函数,UIViewController会默认使用UIViewController的nibName和nibBundle属性尝试从nib文件载入view。...假设没有找到nib文件,它尝试寻找一个与UIViewController类名匹配的nib文件。 假设没有可用的nib文件,那么它创建一个空的UIView作为它的view。...除非你没有使用xib文件创建视图 4、viewDidLoad 加载完毕,能够进行自己定义数据以及动态创建其它控件 5、viewWillAppear...1、viewWillDisappear 视图将被从屏幕上移除之前运行 2、viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了
2.每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。...url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation // NOTE: 9.0以后使用新...那么UIWindow是如何将View显示到屏幕上的呢? 这里有三个重要的对象UIScreen,UIWindow,UIView。 UIScreen对象识别物理屏幕连接到设备。...UIView执行绘画,当窗口要显示内容的时候,UIView绘画出他们的内容并附加到窗口上。...return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 这个默认的iOS程序就是从main
领取专属 10元无门槛券
手把手带您无忧上云