ios开发问题汇总(一)
教程汇总
- 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开发问题汇总(一)相关推荐
- Mac和ios开发资源汇总
目录 1.苹果官方文档 2.邮件列表 3.论坛 4.网站 5.博客 6.大会 7.播客和录像 正文 1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: Start Dev ...
- Mac和iOS开发资源汇总—更新于2013-10-14
From:http://beyondvincent.com/blog/2013/07/18/106/ 1U55JG9-0 小引 本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏( ...
- iOS 开发资源汇总 肯定有你想要的资源(Continuously updated)
##写在文前 为什么还要重复造轮子? 我相信在看到这篇文章之前,大家肯定找到了很多iOS资源收集,自学资源,精品资源,开源项目收集,大牛Blog集合等等. 这类文章实在太多太多了,并且也广泛得到大家的 ...
- Xcode IOS开发错误汇总
[错误信息] 真机调试时出现如下错误: Code Signing Error Signing for "*****" requires a development team.Sel ...
- input ios问题 小程序_微信小程序开发常见问题汇总
原标题:微信小程序开发常见问题汇总 1.域名必须是https 非https的域名不被微信小程序允许. 2.input组件placeholder字体颜色 卸载placeholder-class里面的co ...
- iOS开发——网络请求案例汇总(AFNetworking)
我在之前一篇博客中实现了使用NSURLConnection或者NSURLSession来请求网络数据,用的都是苹果自带的方法.请参考<iOS开发--网络请求案例汇总>.现在我们使用最流行的 ...
- 【无限互联】iOS开发视频教程 第1-3章汇总
无限互联iOS开发视频教程,第1-3章汇总,视频持续更新中... http://www.tudou.com/home/tui/item_u113740301s0p1.html 谢谢各位支持!
- 史上最全iOS开发之第三方库整理汇总
UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如 ...
最新文章
- 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )
- python with语句与contextlib
- 数据库系统原理(第5章:数据库编程)
- OSS网页上传和断点续传(OSS配置篇)
- 用 @Value(“${xxxx}“)注解从配置文件读取值的用法
- java jvm 查看内存_JVM:查看java内存情况命令
- Spring Cloud 2020 年路线图
- restful架构风格设计准则(五)用户认证和session管理
- Linux 基础入门---常用命令
- 《PowerMock实战手册》读书笔记及个人总结
- 深入浅出MFC 书中源码Frame1(C++11)
- 四川大学计算机组成原理实验报告_计算机组成原理基础解释
- 数据安全:Mock数据
- vmware vsphere安装与使用
- Cortex M4 SVC 中断
- 可靠性工程师是做什么的?需要哪些能力?
- cookie安全性问题
- node.js学习笔记Day3
- 巨型计算机卡通,动漫史上十大超巨型机体
- 企业微信如何开启全员群?
热门文章
- TreeSet类的排序
- 织梦dedecms5.7二级域名文章图片不显示修改方法.相对路径改为绝对路径的方法...
- 设计模式 - Command
- Windows 8 JavaScript Metro应用程序--入门(上)
- CodeForces	 799B (B) T-shirt buying
- 前端基础3-1——JavaScript
- javame学习_从零基础自学Java教程:648集全网最新Java学习教程,一学就会
- 利用一维数组输出杨辉三角
- CATIA中使用约束时提示“创建的约束是临时的。若希望使他成为永久约束,则需要在单击确定按钮之前激活约束开关。”
- mysql配置文件结构_MariaDB/MySQL配置文件my.cnf解读