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使用pageViewController实现多视图滑动切换
  • iOS UITableViewCell左滑/侧滑删除 仿微信
  • 如何像闹钟一样在锁屏界面显示自定义界面?Alarm presenting specific View Controller instead of notification for iOS 10
  • 关于Xcode8新功能Trait Variations
  • 自定义UITableViewCell时,.xib文件中的变量和事件,虽然和XxxTableViewCell里面的IBOutlet或IBAction连接起来了,但是事件不响应,而且变量修改无效,也就是没有关联起来。原因是我是通过File’s Owner的Outlets列表来连接的,这样无效,同时也设置了根View的class。取消File’s Owner的类设置,改用根View的Outlets列表来连接就行。用文字描述有点难懂哈,有问题评论区讨论。
  • 如何确定UIToolBbar中UIBarButtonItem的位置?
  • KxMenu,一个垂直方向展示的弹出菜单
  • 控制器类似于QDialog,里面可以显示任意的UIView。
  • 事件的产生、传递、响应、应用(UIView不响应事件4种情况:超出父控件响应区、alpha<0.01、隐藏、交互=NO)【hitTest:withEvent:最适合的view和拦截事件】【pointInside:withEvent:点是否在自己坐标系】。参考本文解决了一个重大bug。将UITextField添加到storyboard中的一个UIView上,可以正常显示,但是无论如何都无法点击文本输入框。原因是在对UIView设置约束时,只设置了高度,没有设置宽度,导致其bounds.size.width为0,从而导致hitTest函数无法分配点击事件到子UITextField,从而无法选中文本框进行编辑!

界面元素

  • 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后台应用程序刷新

数据库

  • iOS中的数据库—使用FMDB

代码相关

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

Cocopods

  • 关于CocoaPods网速慢问题

应用签名

  • 首先要明白公钥私钥的原理。应用签名是基于此的。xcode会为应用生成一对私钥公钥,并且使用公钥加密provisioning profile(应用信息描述文件,在ios的设置中可以设置为允许非允许的那种描述应用信息的文件,包括id,组织,开发者等,在apple开发者中心中有介绍),得到一串字符串打包到app中。当app安装到手机上时,ios会根据应用的唯一id,即bundle id,找到对应的私钥,在服务器端进行解密,验证开发者等信息。如果这个签名字符串是伪造的,或者不是此开发者开发的,也就是说有信息匹配不上,那么签名就会验证失败。原理就是这样。其中公钥开发者不需要自己管理,最好不要去知道公钥,因为公钥如果泄漏了,签名可能会被伪造。所以说,整个应用签名详细过程是apple实现的,并对开发者透明的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 建分区索引_Oracle分区表及分区索引-创建list分区

Oracle分区表及分区索引-创建list分区创建list分区的语法如上&#xff0c;需要我们指定的:lcolumn:分区依赖列(注意&#xff1a;只能是一个);lpartition:分区名称;lliteral:分区对应值(注意&#xff1a;每个分区可以对应多个值);l tablespace_clause:分区的存储属性&#xff0c…

【转】WPF从我炫系列3---内容控件的用法

今天我来给大家讲解WPF中内容控件的用法&#xff0c;在WPF中的内容控件&#xff0c;通俗的讲&#xff0c;是指具有Content属性的控件&#xff0c;在content属性里面可以嵌套放置任意其他类型的控件&#xff0c;但是Content只能接受单个元素&#xff0c;可以通过布局控件来组合放…

【iOS开发】添加评分功能

问题 openURL无法跳转到App store 报错 &#xff1a;Failed to open URL itms://itunes.apple.com/us/app/apple-store/idxxxxx 使用canOpenURL时&#xff0c;打印出了错误原因&#xff1a;error: “This app is not allowed to query for scheme itms”&#xff0c;显然是配置…

android 键盘遮盖输入框_Android各种键盘挡住输入框解决办法

原标题&#xff1a;Android各种键盘挡住输入框解决办法今日科技快讯C919大型客机首飞成功&#xff0c;让很多人激动不已。然而近日网上也出现了一些不同的声音&#xff1a;说这架飞机许多部件都是进口货&#xff0c;甚至有人说C919中国人只是造了个壳子。对此&#xff0c;业内人…

【转】WPF从我炫系列4---装饰控件的用法

在这一节的讲解中&#xff0c;我将为大家介绍WPF装饰控件的用法&#xff0c;主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollViewer滚动条控件 大家知道在WPF中的一些布局控件中是不带滚动条的&#xff0c;如果里面…

windeployqt.exe的使用与避坑(windows平台)

1. 介绍 windeployqt.exe是Qt自带的工具&#xff0c;用于创建应用程序发布包。 简单来说&#xff0c;这个工具可以自动地将某程序依赖的库、资源拷贝到其所在目录&#xff0c;防止程序在其他电脑上运行报找不到库的错误。 这里贴上官方文档&#xff1a;https://doc.qt.io/qt-5…

【转】WPF从我炫系统5---基本控件的用法

今天我来给大家讲解WPF中一些基本控件的用法&#xff0c;所谓基本控件&#xff0c;就是我们最常用用到的一些控件&#xff0c;通过这一节的讲解&#xff0c;大家会对WPF中的控件的用法有一个更深入的了解。 1. 基本控件 LABEL控件 Label控件是我们最熟悉的控件&#x…

android自定义push通知_Android自定义Notification的一些坑

第一次在简书发文章&#xff0c;有问题多指教本篇介绍自定义通知样式时会遇到的一些坑,本篇旨在记录坑,而不在全面讲解自定义的方法坑文字颜色:强烈使用系统定义的文字颜色,否则需要固定背景色自定义View的尺寸: 建议自适应&#xff0c;因为不同系统高度会有差别不同系统版本的…

【微软官方文档】应用程序错误处理

https://docs.microsoft.com/zh-cn/windows/win32/debugging-and-error-handling

【转】在WPF中自定义控件

周银辉的开发博客(WPF) 在WPF中自定义控件(1) 一, 不一定需要自定义控件 在使用WPF以前,动辄使用自定义控件几乎成了惯性思维,比如需要一个带图片的按钮,但在WPF中此类任务却不需要如此大费周章,因为控件可以嵌套使用以及可以为控件外观打造一套新的样式就可以了.是否需要我们…

二叉树前序中序后序javascript_JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】...

本文实例讲述了JavaScript数据结构与算法之二叉树遍历算法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;javascript数据结构与算法--二叉树遍历(先序)先序遍历先访问根节点&#xff0c; 然后以同样方式访问左子树和右子树代码如下&#xff1a;/**二叉树中&#xff0…

Windows上快速在指定目录打开cmd.exe命令行的方法

前言 命令行在项目开发中使用频率很高&#xff0c;在指定目录中打开命令行也是很常见的需求&#xff0c;本文将介绍几种快速在指定目录打开cmd.exe命令行的方法&#xff0c;提高效率。 普通方式 运行->输入cmd.exe&#xff0c;点击确定&#xff0c;打开cmd.exe。 在cmd.…

【转】WPF默认控件模板的获取和资源词典的使用

一、获取默认的控件模板 WPF修改控件模板是修改外观最方便的方式&#xff0c;但是会出现不知道原来的控件的模板长什么样&#xff0c;或者如何在原有控件模板上修改的&#xff0c;下面就分享了获取某控件默认控件模板的方法&#xff08;以控件Button为例&#xff09;&#xff…

python设置默认密码_使用Python生成随机密码的示例分享

生成随机密码这件事情用python来干确实相当的方便&#xff0c;优美的string方法加上choice简直是绝配make_password.py###简单几行代码执行即可生成记不住的字符串###$ python make_passwd.pyDLrw9EiTQs4Wm84qRQwl4L2Lu9g0LgwWjHPtYdyU...$ python make_passwd.pyDLrw9EiTQs4Wm…

【微软官方文档】Windows终端(Windows Terminal)

https://docs.microsoft.com/zh-cn/windows/terminal/

【转】WPF Expander 收缩不占空间的用法

WPF 中 Expander 的&#xff0c;默认折叠状态&#xff0c;只是把内容隐藏&#xff0c;实际是还是占有空间的。按照下面的做法&#xff0c;可以是下面的控件&#xff0c;位置移动。 <StackPanel > <Expander Name"a" Header"xxxx">…

多级队列调度算法可视化界面_C++实现操作系统调度算法(FSFS,SJF,RR,多级反馈队列算法)...

#include#include#include#includeusing namespace std;unsigned int q_id0; //用于队列进程号的全局变量unsigned int l_id0; //用于链表进程号的全局变量unsigned int stime0; //系统时间&#xff0c;开始为0struct Pro //调度进程的数据结构{unsigned int PID; //进程标志号…

【iOS开发】崩溃问题汇总

EXC_BAD_ACCESS崩溃 位置&#xff1a;在UIApplicationMain函数内崩溃&#xff0c;相关函数&#xff1a;objc_release&#xff0c;场景&#xff1a;在界面多次切换时崩溃&#xff0c;可以稳定复现&#xff0c;环境&#xff1a;启用了ARC。 原因可能有很多种&#xff0c;我的是…

【转】WPF之路-常用布局控件一

WPF布局原则 不应显式设置大小 为了布局的稳定性&#xff0c;控件的大小应该可以自动适应容器。如下为新建一个窗体&#xff0c;默认包含一个Grid容器&#xff0c;该控件没有显式设置宽高&#xff0c;所以&#xff0c;在改变窗体大小的时候&#xff0c;该容器的大小也随着变化…

jparepository查询所有_jpa中查询大量数据

数据库查询一直是提高程序速度的瓶颈之一&#xff0c;本人也遇到了因为数据库数据查询过久导致影响失败&#xff0c;在这里记录以下解决的方法。描述该功能为统计功能&#xff0c;根据参数查找出符合的器具信息&#xff0c;然后再根据统计信息得出统计数据。就好比要统计某个年…