教程汇总

  • IOS比较好的网络教程:IOS编程浅蓝教程
  • IOS编程教程(五)自定义UITableView的表单元格
  • 菜鸟教程-iOS教程

开发问题

  • 实现页面切换,网上某些文章写的是:
[self.navigationController performSegueWithIdentifier:@"ShowDetail" sender:self];

这么写的话,软件运行时会报错:

‘Receiver (<UINavigationController: 0x7f8e2781f400>) has no segue with identifier ‘ShowDetail’’

解决办法是:

[self performSegueWithIdentifier:@"ShowDetail" sender:self];

也就是说应该用转场segue的源页面的控制器self来作为函数调用(oc中叫通知)对象。

找了两天终于找到这个问题的答案:https://stackoverflow.com/questions/20715462/receiver-viewcontroller-has-no-segue-with-identifier-addsegue,百度啥也搜不到啊,都是你抄我我抄你,难。

  • OC语言不支持类静态变量,但是支持类静态属性,如
@property (class, nonautomic) int a;

和类静态变量作用一样。

  • 添加constraint后不显示,可能是高度未设置,值不能全为相对值。有时设置高度也没用,必须要有内容才能显示,和css类似。
  • SafeArea是什么:iOS 11 safeArea详解 & iphoneX 适配。SafeArea下的content view的高度是随着内容改变的,所以在添加高度的constraint时,一般相对于SafeArea才能进行有效的高度设置。
  • UIScrollView的FrameLayout和ContentLayout:iOS 11 适配工作
  • iOS中的颜色:ios开发常用RGB色值
  • 如何设置UILabel的内边距?
  • Storyboard中,TabBarNavigator文字不更新,第一种解决方法是重新连线,第二种解决方法是取消本地化翻译,然后再次加载本地化翻译,在弹出的确认框中选择 “替换”。
  • 使用Prototype Cell 自定义表视图
  • UIPickerView自定义选中的字体颜色、字号、字体
  • NSMutableAttributedString使用介绍
  • UIButton 基础
  • iOS UITableView动态隐藏或显示Item
  • NSArray存结构体,可以参考:结构体存储在NSArray中的方式,不过需要注意,这样存的话,结构体必须为POD即基本数据类型。如果结构体中包含对象指针,则对象不会被正确释放。
  • StoryBoard界面文字不更新,是由本地化文件导致的,保持Localization中Base不变,先取消勾选本地化语言,如English,Chinese等,再勾选,弹出的对话框中选择Replace File,即可更新翻译文件,解决界面文件不更新的问题。
  • iOS之枚举用法
  • iOS-代码加载storyboard中的ViewController
  • 从url中获取文件名以及后缀

子控制器 addChildViewController

  • addChildViewController时子控制器中的UI显示问题
  • iOS笔记 addChildViewController
  • iOS addChildViewController方法
  • 以上文章都不靠谱,addChildViewController要和removeFromParentViewController成对调用,还要addSubView
  • 报错:unbalanced calls to begin/end appearance transitions for uiviewcontroller的解决方法,这个方法不怎么管用。也可以动画开始前关闭交互,动画结束后开启交互。对我来说也不管用。去掉removeFromSuperView就好了。
  • transitionFromViewController方法没有动画的问题:transitionFromViewController方法的使用,按照这篇文章做,只需要在初始化时把所有的子ViewController通过调用addChildViewController加入到父ViewController,其他地方都不需要调用addChildViewController,也不需要removeFromParentViewController。addSubView也只是初始化时调用一次即可,不需要在其他地方调用。options参数只有填UIViewAnimationOptionTransitionXXX才有动画,这个才是动画类型,而UIViewAnimationOptionCurveEaseOut是动画方式。

遮罩mask,CALayer,贝塞尔路径

iOS 利用CAShapeLayer的FillRule属性生成一个空心遮罩的layer。要理解两种填充方式的区别。

对话框

  • ios-如何在UIAlertController中隐藏标题/消息框架?

导航

  • iOS开发之导航栏各种右滑返回失效的解决方法汇总
  • Segue导航与传值,官方文档:Customizing the Behavior of Segue-Based Presentations
  • 关于Unwind Segue实现任意动态跳转,官方文档:Dismissing a View Controller with an Unwind Segue
  • 右滑返回很神奇,多次启动右滑又取消,会多次触发popViewControllerAnimated和willShowViewController,但是取消右滑又不会触发任何函数。

界面

界面问题

  • 关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例。在storyboard中画的大小在运行时就不是那么大了,需要通过约束来显式指定其位置和大小。
  • 关于等宽字体。以前不知道等宽字体有什么用,直到我想在软件中显示计时时间,如果不用等宽字体,时间数值文字会不断跳动,不是我想要的效果。这个时候就需要等宽字体来显示数字。可以参考文章:IOS 上支持的等宽字体。但是ios自己用的等宽字体是:[UIFont monospacedDigitSystemFontOfSize:35 weight:UIFontWeightSemibold]。
  • 圆角按钮:iOS 部分圆角的正确实现,在此基础上稍加修改即可。
  • iOS拦截导航栏返回按钮事件的正确方式(二),此方法有问题,见:iOS 13 and UINavigationBarDelegate::shouldPop()。即(BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item无论在模拟器还是在手机设备上都不调用。解决办法是重设delegate:self.navigationController.navigationBar.delegate = self;不要采用catagory的方式实现,直接实现UINavgationController子类,并在Storyboard中设置导航控制器的类名即可。
  • UINavigationController与UINavigationBar详解
  • UITextField无法使用第三方键盘的问题。是因为设置了secureTextEntry为True的输入框,会使其前一个输入框也无法使用第三方输入框。百度啥也搜不到,见:Native UITextField Secure Text Entry forces English (US) keyboard,用谷歌搜。

界面元素

  • iOS 人机界面指南精简版笔记之界面元素:Bars
  • 高版本ios底部有一个横条,SafeArea不包含这个横条,如果UITableView的高度和SafeArea相同,那么屏幕底部就会有一块灰色区域。这个灰色区域不是什么控件,只要把UITableView的高度设置到和SuperView一样高就可以消除这块灰色的,遮挡UITableView的区域的了。
  • UINavgationController包含是控制导航的。它包含的界面包括:app界面的导航栏和工具栏,并负责处理导航栏和工具栏的业务逻辑。夹在导航栏和工具栏中间的部分是我们的UIViewController业务子类,脑海里要有这个结构。
  • UINavigationItem:这个类封装了UINavigationBar里面的所有元素,每个UIViewController对应一个navigationItem,可以使用self.naviigationItem访问。

对象间通信

信号槽

[Objective-C] selector 简介

本地通知

  • removeObserver的正确使用姿势

自动布局

  • 问题:LayoutConstraints] Unable to simultaneously satisfy constraints,约束冲突,参考:translatesAutoresizingMaskIntoConstraints 详解,即对约束的View,设置translatesAutoresizingMaskIntoConstraints = NO,禁用AutoResizing布局,防止冲突。
  • 约束冲突时最常见的问题,例如设置了View上下距离为0来实现居中,但是因为View高度不够,这时候视图View就会靠上显示,这时候如果想要居中,就必须删除上下限制,改用NSLayoutAttributeCenterY中心点对齐。
  • 左右同时设置内边距和设置宽度会冲突。

指针

  • 对象指针不需要初始化,默认为nil,注意是ARC下的对象指针。

本地通知

  • iOS 10前后两种本地通知

远程通知

UITableView

  • UITableView全面解析
  • UITableView被导航栏遮挡的解决办法,如果是系统生成的NavigationController带的TableViewController,会出现这样的问题。个人建议删除这个系统创建的TableViewController,自新建一个普通的ViewController,它的SafeArea不包含导航条,在里面放一个TableView即可,这样不光可以放TableView,还可以放其他控件,一举两得。
  • 如何在使用storyboard中使用tableViewController中的Prototype Cells 自定义cell,本以为不需要新建类就可以处理,其实最终还是避免不了要新建单元格类。Prototype Cells只是自定义的单元格的Ui界面而已,并不会自动实例化,需要在cellForRowAtIndexPath回调中,通过dequeueReusableCellWithIdentifier:@"单元格identifier"来创建。
  • iOS: 在UIViewController 中添加Static UITableView,Static Table Cell。
  • iOS 9 Storyboard 教程(二上)介绍Segue静态单元格(static cell),个人喜欢使用动态单元格,更灵活。
  • 关于tableView的reloadRowsAtIndexPaths,可以了解到cell重用的机制。
  • UITableView 在UITableViewStylePlain模型下,取消headerView的黏结性,不浮动
  • UITableView在style为plain时,实现sectionHeader跟随cell移动
  • iOS UITableView 实现去除Section的分割线,保留Cell的分割线
  • UITableviewFooter上拉显示不全的问题,我没有用文中的做法,而是添加约束:table.bottom = SuperView.bottom
  • iOS UITableView section圆角阴影
  • 解决UITableViewStylePlain方式headerView顶端 滞留的代码
  • iOS UITableView获取特定位置的cell
  • 将UITableViewCell设置为圆角,困扰了我很久,一句代码就可以搞定:

cell.layer.cornerRadius = 10

界面美化

  • iOS 统一定制导航栏的 appearance 方法

动画

  • CABasicAnimation.beginTime:是绝对时间,应该用CACurrentMediaTime()+n,否则设置无效。

IOS应用本地化/国际化

  • iOS应用本地化
  • IOS本地化
  • Localization native development region 更改语言无效

多媒体

系统提示音

  • iOS系统提示音的使用
    这个问题,搞了一天,能踩的坑都被我踩了。。方法和代码参考上面的链接。
    在模拟器中使用上面的方法是获取不到系统提示音列表的。通过代码枚举目录,在iOS模拟器中运行,进入到路径/System/Library/Audio/UISounds/下,发现什么都没有。这导致我认为这个方法太老了不能用,差点放弃。在互联网上搜了很久,只有这个方法。而且在仓库https://github.com/TUNER88/iOSSystemSoundsLibrary的issue列表中,看到有人说高版本iOS也可以用(我用的是iOS14.5)。又继续尝试这个方法。经过不断枚举,发现iOS模拟器中的目录完全就是mac电脑的目录啊!于是换成在真机上测试(iphone11)。
    在我自己的手机上,逐个目录枚举,发现只能枚举到根目录下的内容,子目录,比如/System下的内容就枚举不出来了。一筹莫展时,将路径直接改为/System/Library/Audio/UISounds/,列表竟然出来了。也就是说虽然上级目录无法枚举,但是指定目录还是可以枚举的!
  • iOS录音后播放声音变小的解决方法
  • iOS音频Error
  • 项目中需要录音,但是在录音开始和结束时,播放1113和1114系统提示音,结果出现提示音播放声音变小的问题。上面给出的两篇文章虽然给出了相关代码,但是并没有完全解决我的问题。最后在多次尝试下得出最终的解决方案,即一定要保证代码顺序,先开启录制,再设置音频会话参数,最后再播放系统提示音!顺序错了的话,设置音频会话参数无效。
  • 先录音再播放时出现问题,没有声音。录音文件5kb,但是播放时没有声音,以为是播放问题。参考AVAudioPlayer播放音频文件时没声音。后面通过打印音频文件时长得知,音频文件还不到0.1秒。那么肯定是录制的问题了。经过修改代码,audio session的设置一定要在record之前,否则录音会失败!

文件系统

  • fileURLWithPath,不要用relativeToURL,否则不会带有file:///前缀,导致某些函数报错无法识别。
  • iOS fileExistsAtPath:函数返回结果错误
  • 用NSFileManager的fileExistsAtPath检查file:///前缀的文件路径指向的文件是否存在,会返回失败。要使用NSURL的checkResourceIsReachableAndReturnError函数来检查。
  • pathForResource返回nil,以及UIWebView本地加载html、css/js,文件名和后缀名分开写,例如加载1.html:NSString *filePath = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"html"];

多线程

  • dispatch_async多线程通信

系统功能调用

  • iOS应用内跳转到系统设置页面

数据库

  • iOS中的数据库—使用FMDB

代码相关

  • iOS 注释方法大全 代码块加快捷键注释
  • iOS 创建代码块

ios开发问题汇总(一)相关推荐

  1. Mac和ios开发资源汇总

    目录 1.苹果官方文档 2.邮件列表 3.论坛 4.网站 5.博客 6.大会 7.播客和录像 正文 1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: Start Dev ...

  2. Mac和iOS开发资源汇总—更新于2013-10-14

    From:http://beyondvincent.com/blog/2013/07/18/106/ 1U55JG9-0 小引 本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏( ...

  3. iOS 开发资源汇总 肯定有你想要的资源(Continuously updated)

    ##写在文前 为什么还要重复造轮子? 我相信在看到这篇文章之前,大家肯定找到了很多iOS资源收集,自学资源,精品资源,开源项目收集,大牛Blog集合等等. 这类文章实在太多太多了,并且也广泛得到大家的 ...

  4. Xcode IOS开发错误汇总

    [错误信息] 真机调试时出现如下错误: Code Signing Error Signing for "*****" requires a development team.Sel ...

  5. input ios问题 小程序_微信小程序开发常见问题汇总

    原标题:微信小程序开发常见问题汇总 1.域名必须是https 非https的域名不被微信小程序允许. 2.input组件placeholder字体颜色 卸载placeholder-class里面的co ...

  6. iOS开发——网络请求案例汇总(AFNetworking)

    我在之前一篇博客中实现了使用NSURLConnection或者NSURLSession来请求网络数据,用的都是苹果自带的方法.请参考<iOS开发--网络请求案例汇总>.现在我们使用最流行的 ...

  7. 【无限互联】iOS开发视频教程 第1-3章汇总

    无限互联iOS开发视频教程,第1-3章汇总,视频持续更新中... http://www.tudou.com/home/tui/item_u113740301s0p1.html 谢谢各位支持!

  8. 史上最全iOS开发之第三方库整理汇总

    UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...

  9. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如 ...

最新文章

  1. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )
  2. python with语句与contextlib
  3. 数据库系统原理(第5章:数据库编程)
  4. OSS网页上传和断点续传(OSS配置篇)
  5. 用 @Value(“${xxxx}“)注解从配置文件读取值的用法
  6. java jvm 查看内存_JVM:查看java内存情况命令
  7. Spring Cloud 2020 年路线图
  8. restful架构风格设计准则(五)用户认证和session管理
  9. Linux 基础入门---常用命令
  10. 《PowerMock实战手册》读书笔记及个人总结
  11. 深入浅出MFC 书中源码Frame1(C++11)
  12. 四川大学计算机组成原理实验报告_计算机组成原理基础解释
  13. 数据安全:Mock数据
  14. vmware vsphere安装与使用
  15. Cortex M4 SVC 中断
  16. 可靠性工程师是做什么的?需要哪些能力?
  17. cookie安全性问题
  18. node.js学习笔记Day3
  19. 巨型计算机卡通,动漫史上十大超巨型机体
  20. 企业微信如何开启全员群?

热门文章

  1. TreeSet类的排序
  2. 织梦dedecms5.7二级域名文章图片不显示修改方法.相对路径改为绝对路径的方法...
  3. 设计模式 - Command
  4. Windows 8 JavaScript Metro应用程序--入门(上)
  5. CodeForces 799B (B) T-shirt buying
  6. 前端基础3-1——JavaScript
  7. javame学习_从零基础自学Java教程:648集全网最新Java学习教程,一学就会
  8. 利用一维数组输出杨辉三角
  9. CATIA中使用约束时提示“创建的约束是临时的。若希望使他成为永久约束,则需要在单击确定按钮之前激活约束开关。”
  10. mysql配置文件结构_MariaDB/MySQL配置文件my.cnf解读