iOS开发实战小知识点(四)
一、 iOS 连续多次 Present VC,dismiss 之后可能异常
记住: 谁present 谁dismiss。
我们习惯都是在presented VC直接dismiss的,一般不会出现问题,但是多次present之后,在dismiss可能就会出现异常。 官方给出的属性解释:
// The view controller that was presented by this view controller or its nearest ancestor.
@property(nullable, nonatomic,readonly) UIViewController *presentedViewController NS_AVAILABLE_IOS(5_0);// The view controller that presented this view controller (or its farthest ancestor.)
@property(nullable, nonatomic,readonly) UIViewController *presentingViewController NS_AVAILABLE_IOS(5_0);
复制代码
用presentingViewController dismissViewControllerAnimated:
就不会出现异常了。
二、设置navigationItem.left/rightBarButtonItem 异常
如果不是特殊情况,能用系统方法直接搞定的,强烈推荐用系统方法(UIBarButtonItem
)设置。 举个栗子:
//类似这种直接设置initWithImage/initWithTitle
UIBarButtonItem *scanButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"scan_code"] style:UIBarButtonItemStylePlain target:self action:@selector(pushScanController)];
self.navigationItem.leftBarButtonItem = scanButton;
复制代码
用系统方法简单,而且不用调整边距,所有边距都一样;用自定义View方法(initWithCustomView:
),可能要调整边距等问题产生。 注意: 如果复杂的要自定义view方法设置self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customView];
如果customView 是UIButton,在iOS 11系统以下,必须要设置UIButton的frame,否则不会显示出来。在iOS 11系统可以不设置UIButton的frame,系统会根据你设置的Button图片或是文本自适应一个frame。 由于一直在iOS 11系统上开发,忘记了设置frame,也显示正常,导致在其他系统上出现了这样一个BUG。 #####最近开发又遇见了一个问题:使用系统的方法initWithImage
设置一个BarButtonItem。但是这Item可能不显示,因此就这么设置了一下: barButtonItem.image = nil;
就是这句话导致在iOS 11系统以下不能显示了。 解决办法: barButtonItem.image = [UIImage New];
也是由于没有设置frame方法导致的。
三、打包上传Error汇总
打包上传异常原因汇总
四、彻底删除NSUserDefaults方法
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
复制代码
五、重置苹果测试设备数量限制方法
发邮件方法 唐巧围脖
六、国际化适配UI
国际化有的国家习惯从左到右,而有的国家习惯从右到左。 在iOS 9之后,苹果大大已经为我们做了UI适配。在我们使用约束布局的时候,使用leading和trailing
而不用left和right
。即可自动实现左右切换。 但是我们不想让它按着国家左右切换呢,直接强制写死方向: 只在iOS 9系统以后生效: 设置这个属性,强制确定方向即可。
if ([[UIDevice currentDevice].systemVersion floatValue] > 9.0) {[UIView appearance].semanticContentAttribute = UISemanticContentAttributeForceLeftToRight;}
复制代码
参考文章:iOS冷门知识点 苹果官方文档
iOS开发实战小知识点(四)相关推荐
- iOS开发实战小知识点(五)——获取JS meta异常
####在开发中遇见一个问题: 获取H5某个meta的值,在iOS 10(包括)系统以上可以正常获取,但是在iOS 10系统以下获取meta值返回为nil. #####代码如下: NSString * ...
- Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序
Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序.自从Xamarin问世后,C#的作用就发生了很大的变化. ...
- Android项目开发实战常用知识点
Android项目开发实战常用知识点 一:启动页延时两秒再跳转到主界面: //执行类 private class SlpashRunnable implements Runnable {@Overri ...
- 小米手环iOS开发实战(二):开发Demo让你的手环振动起来
小米手环iOS开发实战(二):开发Demo让你的手环振动起来 上一节讲了CoreBluetooth的使用,理论知识很枯燥,那么现在先利用上一节讲的内容,做一个简易手环应用,实现连接/断开手环,查看手环 ...
- Xamarin iOS开发实战1.1.3Xamarin版本
Xamarin iOS开发实战1.1.3Xamarin版本 Xamarin提供了免费版和付费版.免费版本包含Xamarin Studio服务.付费版本分为普通版299美元/年.商业版999美元/年和企 ...
- Xamarin iOS开发实战中册 (内部资料)C#苹果应用开发
Xamarin iOS开发实战中册 (内部资料)C#苹果应用开发 Xamarin iOS开发实战中册 (内部资料)C#苹果应用开发 试读样章下载地址:http://pan.baidu.com/s/1j ...
- Xamarin iOS开发实战上册-----2.2.2 使用代码添加视图
Xamarin iOS开发实战上册-----2.2.2 使用代码添加视图 如果开发者想要使用代码为主视图添加视图,该怎么办呢.以下将为开发者解决这一问题.要使用代码为主视图添加视图需要实现3个步骤. ...
- Xamarin iOS开发实战上册(内部资料daxueba.net)
Xamarin iOS开发实战上册(内部资料daxueba.net) 试读样章下载地址:http://pan.baidu.com/s/1mgqQIxE 第2章 用户界面--视图 在iPhone或者i ...
- Xamarin iOS开发实战(内部资料)
Xamarin iOS开发实战 (内部资料) 介绍:本教程是国内Xamarin针对iOS 9开发的唯一教程.本教程针对Mac OS X10.11/Windows 10两种系统平台,讲解如何使用Xama ...
最新文章
- 模拟生态系统-自己编写生命
- C# winform combobox 在绑定数据之后插入一项选择项
- 《悦趣式连锁反应》玩转STEM教育!529块积木元件,N+1款炫酷模型
- 资深工程师为何否定这种单例模式
- 京解之才——2019年技术盘点微服务篇(三)| 程序员硬核评测
- 公有云网络服务需要考虑的关键点
- Intel Core Enhanced Core架构/微架构/流水线 (7) - 栈指针跟踪器/微熔合
- php时间戳源码,php格式化时间戳
- python 写一个计算器_Python | 写个计算器吧
- 全国航空机场分布矢量数据/旅游景点poi/全国港口码头分布/地铁站分布/火车站分布/2020年POI矢量数据
- 基于Java swing实现的学生选课管理系统
- 【Windows】VMware虚拟机安装Windows 10 教程
- [转] Redefining the shading languages ecosystem with SPIR-V
- 英语:逆向忠言(转载)
- 仅需三个步骤,即可将wps转换成word
- APP 微信支付java后台代码(解决支付失败返回-1)
- Codeforces1541B Pleasant Pairs (思维)
- linux下的go富集分析,GO富集分析(转载)-Go语言中文社区
- 在chromium内不能激活fcitx输入法
- torch-fidelity 简便计算FID,ISC,KID,PPL