; -- UIWindow 属性 : 代表 IOS 应用程序的窗口, 一个应用只需创建一次 UIWindow 窗口; -- FKViewController 属性 : 代表视图控制器, 系统创建控制器时...IOS 的 MVC 模式 - M(Model 模型) V (View 视图) C (Controller 控制器) IOS MVC 模式 : -- Model 模型 : Model 一般式普通的 Objective...方法 : 视图显示出来后系统自动回调的方法; -- viewWillDisappear 方法 : 视图将要被隐藏 或者 关闭时, 回调该方法; -- viewDidDisappear 方法 : 视图被隐藏...默认为 id, 如果需要更精准可以设置成具体的 UI 组件类, 如 UIButton; -- Event : 选择为什么样的事件绑定 IBAction 属性, 默认 Touch Up Inside 在...灰色箭头作用 : -- 作用 : 箭头表示 UI 控制器之间的切换关系, 箭头指向需要加载的 视图控制器; -- 移动箭头 : 视图中只有一个 UI 控制器, 移动箭头始终指向唯一的 一个 UI 控制器
获取 PList 的 Bundle 路径 | ⑤ PList -> 数组 ) ( 2 ) 懒加载 优化 ( ① 在 get 方法中加载数据 | ② 如果为 空 才 加载 ) 八....UIViewController 创建完成 , 并开始加载到内存中时 , 在这个时刻执行该 viewDidLoad 方法 //一般情况下 是 在该方法中 执行 初始化数据 , 创建控件 等操作 ; -...) UIButton 的启用 禁用 : 1.enabled 属性 ( 可视化修改 ) : 在 UIButton 的 属性查看器中 Control 模块下 , Enabled 属性用来设置 按钮是否可用...如果为 空 才 加载 ) 懒加载优化 : 1.懒加载原则 : ① 用到 某 属性的时候才去 加载 ; ② 没有值 时 才 进行初始化 ; 2.点语法说明 : 以 @property (strong,...setPics:(NSArray*)pics; ; 其实际的 变量名称 是 _pics ; 根据 用到 属性时 才去加载 原则 , 这里将加载过程放在 get 方法中 ; 3.读取 plist 频率 :
小编有个自己学习交流群681503716(验证编号:大鲨)在iOS学习道路上的小伙伴可以加一下哦~ 直接在Xcode中创建“Empty Application”(注意在Xcode6中这个选项已经没有了,...这里采用Xcode5.1),此时会发现已经没有ViewController和storyboard文件,我们需要手动创建一个视图控制器(在项目中右键选择Objective-c class,默认继承自UIViewController...新建的视图控制器默认情况下是无法加载到程序运行界面上的,此时需要在应用程序代理的程序加载完毕事件中手动加载并显示我们的视图。...UIWindow对象,同时把我们的视图控制器KCMainController设置为UIWindow的根视图控制器,然后设置这个UIWindow为主窗口并可见。...当主窗口设置为可见过程中会调用视图控制器的loadView方法来加载视图(注意视图控制器的loadView方法是延迟加载的,第一次调用视图控制器的view属性才会调用此方法;由于makeKeyAndVisible
UIActionSheet 所有控件(控件是将用户触摸转换为回调触发器的屏幕对象。)...注意:对于导航栏定制,对定制实际标题的最简单方式时使用子视图控制器而不是导航项的title属性: C代码 self.title = @"Hello"; self.title = [[[NSBundle...向不同的视图同时提供一次单击访问,向用户选择的屏幕和编辑底栏的屏幕同时提供More按钮。 ...• –viewDidLoad:当加载控制器的视图到内存时,该方法被调用。...控制器加载视图过程 当调用视图控制器的view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好的编程惯例。
当你用浏览器去请求时发现响应头Content-Type: text/html;charset=UTF-8是这样的,但是afNetwork 请求是Content-Type:text/plain;charset...为什么pc浏览器访问的和用afNetwork访问的不一致呢?...中添加子按钮无法响应事件问题 问题分析: UIImageView默认是不接受事件响应的userInteractionEnabled=NO,所以用户点击操作在该控件即被截停了,无法往子控件中传递...在开发IOS的时候,好多第三方库使用JSONKIT这个库,在IOS6.0以上的版本编译的话,会提示 Semantic Issue错误。...,AFNetworking 2.0默认在检查SSL证书的时候比较严格self.securityPolicy.allowInvalidCertificates = YES; 解决办法就是允许使用无效的证书
标志允许您声明全局常量文字,并对其在 Objective-C 代码中支持的其他文字执行优化; 可以在 Xcode 的构建设置中配置 C++20 和 GNU++20 C++; 支持 C++20 似然属性...; 添加了对 UIButton 和 UIBarButtonItem 上的 changesSelectionAsPrimaryAction 属性的支持; 支持从对象库中创作和拖动 iOS Core Location...macOS 12 中支持斜角颜色; 在适用于 macOS 12 的应用程序中,您可以使用属性检查器中的 localize 属性在非系统 NSMenuItem 上配置本地化的等效键选项; 在 iOS 15...十九、Project Navigator 当 Products 组位于默认位置时,项目导航器会隐藏它; Move Focus to Editor 命令现在解释 vim 方向移动键; schema 编辑表不再有最大尺寸...默认情况下,这些资源使用内置的音量 envelope 进行播放,该 envelope 在开始时将信号慢慢提升并在结尾慢慢降低,以避免产生咔嗒声。
接下来,简单介绍一个我在实际开发中抽取出来的工具类 - MNKit MNButton 业务开发中,UIButton控件应该算最常用的控件之一了,而且它的属性设置还贼麻烦,很多个都是要用 [ set...,包括target默认是UIControlEventTouchUpInside(点击),传入target的名称就行,这里要切记传的是SEL对象,记得加@selector(xxxName),有了这步设置,...之后,一行代码即可调用 默认主题设置: //基础设置 && 多少秒后隐藏 + (void)setSVDuration:(CGFloat)time{ //设置标题颜色 [SVProgressHUD...SVProgressHUDMaskTypeNone - 默认状态,可以交互 。 SVProgressHUDMaskTypeBlack - 不可交互,背景色变黑(iOS7.0+) 。...是有动画效果,延迟加载的,如果网络请求过快(1s以内就请求成功),可能会导致提示框一直在界面上出现 ---- 因为有一些我封装的工具类可能就我们现在这种项目中用得到,如果有需要或者以后迭代过程中可以通过外部参数控制的
UITabBarButton UITabBarButton⾥面显⽰什么内容,由对应子控制器的tabBarItem属性来决定 c1.tabBarItem.title=@"消息"; c1.tabBarItem.image...有两种方式可以往UITabBarController中添加子控制器 (1)[tb addChildViewController:c1]; (2)tb.viewControllers=@[c1,c2,...每个视图控制器都有一个tabBarItem属性,通过它控制视图在UITabBarController的tabBar中的显示信息。...self.hidesBottomBarWhenPushed = YES; } //如果在push跳转时需要隐藏tabBar,需要在最外层的VC中跳转之前设置 // block 回调中跳转 需要紧紧写在跳转的前后...只需在第一层页面向第二层页面跳转的地方设置一次即可,第二层向第三层跳转时不需要再次设置,当然,想在第三层页面上显示出 tabbar,设置.hidesBottomBarWhenPushed = NO也是不可能的出效果的
开发过程中,系统自带的空间有时候会将有些图片显示出来时自动渲染成蓝色,例如自带的TabBarItem在选中时的图片,还有设置UIButtonTypeSystem样式时按钮的图片,这时候系统都会自动渲染成蓝色...load方法:加载类的时候调用,类在什么时候加载呢?...viewController都是懒加载,即都是在即将显示出来时才加载viewdidLoad,但是只有 tabbarcontroller是在一创建控制器的时候就进行加载viewdidLoad。.../*** 如果希望某些内容能拷贝到任何源代码文件(OC\C\C++等), 那么就不要写在#ifdef __OBJC__和#endif之间 ***/ /***** 在#ifdef __OBJC__...进行定义之外,在iOS开发过程中,我们还可以通过在Build Setting中进行配置宏,而在Build Setting中定义的宏在项目中会找不到,就是我们通过【command】+【鼠标单击】会显示一个
TVButton TVButton 可在 UIButton 控件上重新创建类似于在 Apple TV 上看到的美丽视差效果。长按或拖动即可触发效果。...TransitionButton TransitionButton是一个用于添加带有加载和过渡动画的 UIButton 的库。首先,TransitionButton 是 UIButton 的子类。...TransitionButton 还添加了两个主要方法: • startAnimation():调用时将开始使用加载微调器为按钮设置动画 • stopAnimation():调用时将停止对按钮进行动画处理...Sliders Sliders是完全使用 SwiftUI 构建的库。它使您可以在 iOS,macOS 和 Mac Catalyst 上创建可自定义的水平和垂直滑块。...在个性化设置中,可以设置:简单的渐变值滑块样式;多值跟踪;复杂范围滑块样式;复杂点滑块样式 • https://github.com/SwiftUIExtensions/Sliders ?
第一种比较常见,在网上到处都是,我这也是抄别人的。主要就是说自己定义一个view,弄成透明的,然后盖在TableView的上部和下部,这样就“隐藏”了。...320高度是44 因为在iOS5的时候, 默认Cell就是320宽(那阵屏幕就是那么宽,然后高度是44) 现在是在layoutSubViews 重新绘制这个cell的宽度和高度,所以才是屏幕上的宽度...然而view是很大的对象,创建它会消耗较多资源,并且也影响渲染的性能。如果你的table cell包含图片,且数目较多,使用默认的UITableViewCell会非常影响性能。...解决的办法就是在bitmap context里先将其画一遍,导出成UIImage对象,然后再绘制到屏幕,详细做法可见《利用预渲染加速iOS设备的图像显示》。...例如每次载入50条信息,那就可以在滚动到倒数第10条以内时,加载更多信息: - (void) tableView: (UITableView *)tableView willDisplayCell: (
iOS 应用; 3.设置相关参数 : 设置 ① 应用名称 Caculater ② 组织名称 han ③ 组织标识 cn.han ④ 所使用的语言 Objective-C ④ 设备 iPhone ;...界面时, 先创建哪个 ViewController 控制器, 显示哪个控制器对应的 view 控件, 箭头所指的 ViewController 先进行初始化 并 显示对应的 控件; 3.storyboard...ViewController 控制器; 5.箭头控制 - 删除 : 箭头的对象在左侧显示, 是 Storyboard Entry Point 对象, 选中该对象, 按下 Delete 键, 可删除该箭头...; 2.上拉扩展 对象库 面板 大小 : 将 鼠标移动到 对象库 面板的上边缘, 可以 扩大 对象库 面板框 大小; ---- ( 2 ) iOS 常用 控件 iOS 常用控件 : 1.UILabel...CGAffineTransform 结构体 , 除了 传入的参数外 , 其它 都是默认值 ; /* Return the transform [ a b c d tx ty ]. */ CG_EXTERN
在iOS的开发中,如果使用NSTimer做定时器,一定要在合适的时机销毁这个定时器,不然可能导致内存得不到释放。原因就是循环引用。...在平常情况下,一般我们都能给出正确的释放时机,而如果在写SDK这种就是需要控制器销毁时timer释放的需求时,由于SDK不能干预或是了解开发者会怎样操作,所以尽量自身把这些释放做好。...建议:使用懒加载创建定时器,并且记录当timer 处于dispatch_suspend的状态。...好的,从这个问题我们思考iOS的内存管理: 现在的iOS开发基本都是ARC的,ARC也是基于引用计数的,只是编译器在编译时期自动在已有代码中插入合适的内存管理代码(包括 retain、release、...这里为什么说是大部分,因为底层的 Core Foundation 对象由于不在 ARC 的管理下,所以需要自己维护这些对象的引用计数。
iOS-视频播放器的简单封装 封装视频播放器,首先需要了解视频播放器的实现,iOS9之前可以使用MediaPlayer来进行视频的播放,iOS9之后系统推荐使用AVFoundation框架实现视频的播放...首先CLAVPlayerView加载时需要将播放器layer添加到imageView的layer上,此时蒙版和底部工具条一定都是隐藏的,点击中间播放按钮,视频开始播放并隐藏播放按钮。...因此我们需要在CLAVPlayerView的awakeFromNib方法中,在加载CLAVPlayerView时对其做一些处理。...工具条的显示与隐藏 在播放状态时,当点击imageView,就会弹出底部工具条,可以查看当前播放的时间,视频总时间或进行暂停视频、全屏播放等操作。如果没有操作,工具栏会在5秒之后自动隐藏。...按下时移除定时器,拖动时根据拖动的值即时的计算当前播放时间并显示在label上,松开时计算当前播放时间,并跳转到当前播放时间进行播放。
上边我们说了,程序在启动的时候,会先加载所有的类。...我们使用 Method Swizzling 通常会更改一些系统框架的对象方法,或是类方法。我们改变的不只是一个对象实例,而是改变了项目中所有的该类的对象实例,以及所有子类的对象实例。...原因解释可以参考这篇文章:南栀倾寒:iOS界的毒瘤-MethodSwizzling 关于调用顺序更细致的研究可以参考这篇博文:玉令天下的博客:Objective-C Method Swizzling -...在使用设置字体时,先调用宏定义的缩放字体的方法。但是这样同样需要修改所有用到的 UIFont 的地方。工作量依旧很大。...在分类中实现一个自定义的 xxx_reloadData 方法,在其中添加判断是否为空,以及加载占位图、隐藏占位图的相关代码。
; 源对象的引用计数器不变,副本的引用计算器为1; 指针拷贝(浅复制) 源对象和副本指向同一个对象; 对象的引用计算器+1,相当于做了一次retain操作 1.2 代码重构(前提是已经实现了基本功能)...九宫格(以View为单元,内含UILabel、UIButton、UIImageView,同行和同列的位置关系 center.x = x+ width*0.5) //view 的封装,带有数据模型的构造器以便进行内部控件的数据装配...示例1:UIButton 对象有UILabel 、UIImageView 属性,都是readonly 即这两者的属性存储的指针地址是只读的,不可修改 ,但只读的指针指向的对象的属性成员是可以修改的 示例...CGFloat is not a class, it is a typedef for double (a basic type). 1.5 instancetype简介 OC中,在IOS7之后主推...C++的11版本中,也有类似的关键字auto类型 可见所有的语言都致力于,使语言更容易使用 instancetype 在类型表示上跟id一样(可以表示任何对象类型) instancetype 主要用于类方法实例化对象时
标题设置 self.navigationItem.title = @"标题"; 复制代码 正常情况下,控制器的标题会默认作为导航标题 前景色 self.navigationController.navigationBar.barTintColor...在iOS7之前 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; [[UIApplication...self.navigationController.interactivePopGestureRecognizer.delegate = (id)self; // 控制手势在根控制器时不触发 - (...//方法二 UIButton* leftButton = [UIButton buttonWithType:UIButtonTypeSystem]; leftButton.backgroundColor...但是如果用navigationBar.hidden隐藏导航栏,我们可以继续使用navigationBarHidden提供的滑动pop效果,如果用navigationBarHidden,这个操作将无效;但前者
(4)最重要的可能是给navigationItem设置左右两边的button,一般默认的在左边有“返回”。在右边的有“摄像头”(如微信朋友圈)。...我们当然也能够利用自己创建的导航条button来覆盖原来导航控制器产生的默认的button,如“<Back”。 相同。...隐藏导航条,由此点击进入其它视图时导航条也会被隐藏。...,所谓跳转,事实上就是往导航控制器栈中PUSH或者POP一个视图控制器,这样在最上面的视图控制器就变了,这样视图也跟着变了,由于仅仅显示在栈顶得那个视图控制器的视图 //所以(1)控制所谓的跳转...事实上是导航控制器在控制,在里面的元素都能够通过navigationController属性获取到它们所在的导航控制器 //所以(2)获取到导航控制器之后,使用Push的那个方法,往栈里面放一个视图控制器
当程序接收到内存警告时,controller会尝试卸载view,在卸载循环中,controller尝试释放它的view对象并返回到原始的无view状态(当它不在屏幕上显示时,这个条件的判断到底是根据view...4 controller调用viewDidLoad方法来执行一些加载时(加载时一词,相对于编译时、运行时)任务。 ...(iOS3.0以后不建议重载这个函数来进行额外的清除操作,使用viewDidUnload). b) 默认实现会在确定可以安全地释放view时释放掉view。 ...C.转场代理 (Transitioning Delegates) 根据不同的转场类型方便的提供需要的动画控制器和交互控制器。 ...具体来说,iOS7的自定义切换目的之一就是切换相关代码解耦,在进行VC切换时,做切换效果实现的时候必须要需要切换前后VC的一些信息,系统在新加入的API的比较的地方都会提供一个实现了该接口的对象,以供我们使用
前言 分享iOS开发中遇到的问题,和相关的一些思考,本次内容包括:UITableView滚动问题、ARC、xcconfig、Push证书。...ARC Automatic Reference Counting(ARC)是编译器特性,由编译器插入对象内存管理代码,实现内存管理。...3、在build setting选中某个配置项,cmd+c复制然后到xcconfig的文件中,cmd+v就可以复制配置项到xcconfig中。...image.png xcconifg的配置和工程默认配置、手动在build setting配置有什么区别?...配置的结果优先级不同,我的理解是: a、project默认配置是最低优先级,因为是最基础的配置; b、target配置基于project,但target默认会添加一些配置,优先级比上面高; c、xcconfig
领取专属 10元无门槛券
手把手带您无忧上云