![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发
iOS-阳哥
从事iOS开发多年,对iOS深入的了解。
展开
-
Instruments性能分析之os_signpost的使用
一、基本概念os_signpost相关的API是苹果在发布iOS12时推出的,那么os_signpost到底能干什么呢?我们可以看一下官方文档给出的概述:* @header os_signpost* The os_signpost APIs let clients add lightweight instrumentation to* code for collection and visualization by performance analysis tooling.* C...原创 2021-02-04 15:38:28 · 1791 阅读 · 1 评论 -
iOS开发之冒泡排序的详解
关于冒泡排序的实现:原理:比较相邻元素,将较大的值移动到右边,遇到相同值的元素不进行移动思路:依次比较相邻的数,较小的值放在前面,较大的值放在后面假如n个数字:第一次比较:第一个和第二个比较,最大的放在右边,然后第二个和第三个比较...第n-1个和第n个比较,最大值放在最右边,这样得出数组下标为n-1的值为最大值。第二次比较:第一个和第二个比较,最大的放在右边,然后第二个和第三个比较...第n-2个和第n-1个比较,最大值放在最右边,这样得出数组下标为n-2的值为最大值。...原创 2020-07-11 10:08:45 · 541 阅读 · 0 评论 -
App定位和地图的那些坑
开发App时会遇到各种坑,本文分享我们在iOS/Android系统中定位和地图中遇到的坑,以及携程App的解决方案。定位定位即获取用户当前经纬度,iOS平台都是通过系统SDK接口获取的,因此所有App获取定位及精度的能力是相同的,即使Google Maps、百度地图、高德地图这种专业地图App也是如此;Android平台由于Google Service被阉割,国内App通常是通过高转载 2016-12-20 13:49:16 · 2086 阅读 · 0 评论 -
iOS10适配教程
iOS开发 适配iOS102016年9月7日,苹果发布iOS 10。2016年9月14日,全新的操作系统iOS 10将正式上线。作为开发者,如何适配iOS10呢?1.Notification(通知)自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserNotif转载 2016-09-26 14:07:32 · 2891 阅读 · 0 评论 -
iOS 开发之KVO的底层实现
KVO就是Key-Value Observing,它提供一种机制,当指定的对象属性被修改后,对象就会接受到通知。简单的说就是每次指定的被观察对象的属性被修改后,KVO就会自动通知相应的观察者了。关于KVO的使用网上有好多,这里就不再过多累述了。前些时面试的时候有面试题是关于KVO底层实现的,这里就来记录一下。KVO底层实现大致分为以下几步:一、修改对象的isa指针的指向 Pe原创 2016-08-07 19:13:10 · 462 阅读 · 5 评论 -
iOS程序后台运行继续完成操作
我们知道,到我们程序从前台退到后台(安home)键后,将执行程序的委托方法。// 当应用程序掉到后台时,执行该方法- (void)applicationDidEnterBackground:(UIApplication *)application{ }我们已经知道:当一个 iOS 应用被送到后台,它的转载 2016-06-17 10:44:19 · 5775 阅读 · 0 评论 -
iOS开发过程中使用一些常用的宏
iOS开发过程中使用一些常用的宏可以提高开发效率,提高代码的重用性;将这些宏放到一个头文件里然后再放到工程中的-Prefix.pch文件中(或者直接放到-Prefix.pch中)直接可以使用,灰常方便。[cpp] view plain copy// // MacroDefinition.h // MacroDefinition转载 2016-07-04 10:38:12 · 393 阅读 · 0 评论 -
iOS判断一个日期是否为昨日、今日、今年
1、需要创建一个NSDate类的category,调用的时候需要传进来一个NSDate类型的时间即可返回BOOL值来判断改时间是不是今日等。2、直接上干货创建完分类后,在.h文件中加入下面的代码:#import @interface NSDate (Extension)/** * 是否为今天 */- (BOOL)isToday;/** * 是原创 2016-08-04 14:52:06 · 7428 阅读 · 0 评论 -
iOS 纯代码适配iPhone6,6+
首先说下让自己的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档即可,这里不再多述;第二种方法是和之前iPhone5的类似,比较简单,为iPhone6和6+添加两张特殊的pngiPhone6:命名:Default-375w-667h@2x.png 分辨率:750*13346+ 命名:Default-414w-736h@3x转载 2016-06-23 18:24:47 · 411 阅读 · 0 评论 -
shareSDK自定义分享界面UI
今天设计又给了几个界面的标注,要求完善UI,其中就包括分享界面,于是我立即询问shareSDK的技术支持(找到shareSDK的官网,然后点击企业QQ就可以询问了),技术支持给的解释是,如果要用shareSDK自带的UI,分享界面是不能修改的,只能更改分享平台的小图标和小图标下面的文字,如果非要更改分享界面,只能自己画UI,然后调用shareSDK的无UI分享方法。shareSDK技术支持给了一个转载 2016-06-23 18:14:48 · 836 阅读 · 0 评论 -
SSL/TLS协议运行机制的概述
互联网的通信安全,建立在SSL/TLS协议之上。本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。一、作用不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。(1) 窃听风险(eavesdropping):第三方可以获知通信内容。转载 2016-07-08 16:37:21 · 364 阅读 · 0 评论 -
OSChina.git详解
开源中国相对于github而言优势如下: 1、服务器在国内,访问速度快 2、可以免费创建私有项目,无需付费原文地址:http://blog.csdn.net/magiczyj/article/details/51850696 网站地址:http://www.oschina.netgit使用1、创建ssh key打开终端 此后在转载 2016-09-26 16:34:13 · 848 阅读 · 0 评论 -
浅谈IQKeyboardManager第三方库的使用
IQKeyboardManager是iOS中解决键盘弹起遮挡UITextField/UITextView的一种很实用的工具。无需输入任何代码,不需要额外的设置。使用IQKeyboardManager的你只需要将源文件添加到项目。这里附上下载链接:https://github.com/hackiftekhar/IQKeyboardManagerIQKeyboardManager支持Objec转载 2016-12-08 16:33:15 · 305 阅读 · 0 评论 -
iOS 侧滑返回上一层控制器的解决方案
前言:最近在做一个智能家居的项目,刚开始的时候项目里面没有集成iOS系统的侧滑返回上一界面的功能。前几天公司有人反馈项目添加侧滑返回体验会更好一点,于是我就在网上搜集了一些材料,并针对集成过程中出现的一些问题进行记录,希望对大家有所帮助。一、登录界面右滑卡顿问题由于登录界面是首界面(APP的一级压面),无父级控制器,侧滑的话无处返回,而造成页面卡死的原因正是处于此处。所以需要在一级页面分别...原创 2019-03-25 10:55:03 · 1525 阅读 · 0 评论 -
iOS APP贴牌必备
注意注意注意:重命名项目时,记得先备份好一份APP贴牌:简单的说就是复制一个项目,更换UI或者一些接口就可以了,下面我将介绍一下最开始的项目配置:1:在xcode修改项目名(点击按return键输入项目名字),点击Rename第二步(在项目文件包里)修改项目文件夹名继续修改文件里的文件夹名字(如下图三处地方)第三部修改项目文件名(双击选择显示包内容)...原创 2019-02-18 09:30:11 · 1050 阅读 · 4 评论 -
iOS UIAlertController中间和底部弹出框
直接上代码:一、底部弹出框: UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:@"确认修改设备名称?" preferredStyle:UIAlertControllerStyleActionSheet]; ...原创 2019-01-22 16:13:34 · 2999 阅读 · 0 评论 -
Xcode上传低版本应用到AppStore报ERROR ITMS-90725的错误
最近用xcode 8.3 上传到appstore 的时候,报了一个错误:ERROR ITMS-90725:"SDK Version Issue. This app was built with the iOS '10.0' SDK...网上搜了一些资料,并实践,解决办法如下:下载最新的Xcode,显示报内容 通过以下路径去找ios '1x.0'的sdkContents/Develo...原创 2019-01-03 15:56:41 · 5305 阅读 · 0 评论 -
关于UITableView左滑删除单元格
关于左滑删除这块,相信不少朋友都遇到过。UITableView自定一个左滑的按钮可以自定义,但是越来越多的需求左滑时要实现多个功能。关于功能的实现,需要注意的是,所有关于tableview的操作如果影响到了页面cell的显示,通通遵循一个原则,就是先改数据,后变UI。另外关于置顶,不能单纯交换需要置顶项和第一项的数据;而是将需要置顶项插入到最前面。然后弹窗输入信息修改人物名字这块,简单示范了一...原创 2018-11-28 09:35:10 · 1044 阅读 · 0 评论 -
iOS版本更新时Code signing is required for product type 'Application' in SDK 'iOS xx.x'的问题
archive项目时遇到了Code signing is required for product type 'Application' in SDK 'iOS xx.x'的问题,解决方法如下: 解决方式,如图: 将code signing identity设置为iOS Developer然后clean,重启xcode(这步很关键)再设置自动签名,如图,即可运行程序 ...转载 2018-09-13 15:36:42 · 1294 阅读 · 0 评论 -
iOSLabel文字自适应高度自适应
第一步:创建UILabel对象,并设置一些基本设置 UILabel *label = [[UILabel alloc] init]; label.text = @"8月29日,在雅加达亚运会电子竞技表演赛英雄联盟项目决赛中,中国团队3-1击败韩国队获得冠军,这场来之不易的胜利占据了微博热搜,也刷屏了朋友圈!"; label.textColor ...原创 2018-08-30 11:04:22 · 3460 阅读 · 0 评论 -
iOS获取当前正在连接的WIFI名
公司之前有个需求,关于获取当前连接WiFi名称。此方法需要使用真机来测试才行。一、首先需要引入系统#import<SystemConfiguration/CaptiveNetwork.h>二、下面是方法的封装- (NSString *)seekWifi{ id info = nil; //获取所有的支持接口 NSArray *ifs = (__...原创 2018-08-23 17:40:13 · 808 阅读 · 0 评论 -
iOS安全系列之一:HTTPS
如何打造一个安全的App?这是每一个移动开发者必须面对的问题。在移动App开发领域,开发工程师对于安全方面的考虑普遍比较欠缺,而由于iOS平台的封闭性,遭遇到的安全问题相比于Android来说要少得多,这就导致了许多iOS开发人员对于安全性方面没有太多的深入,但对于一个合格的软件开发者来说,安全知识是必备知识之一。对于未越狱的iOS设备来说,由于强大的沙箱和授权机制,以及Apple自己掌控转载 2016-07-08 16:43:31 · 452 阅读 · 0 评论 -
iOS开发:正确使用const,static,extern
本篇主要介绍在开发中怎么使用const,static,extern3个关键字,如果喜欢我的文章,可以关注我微博:吖了个峥,也可以来小码哥,了解下我们的iOS培训课程。后续还会更新更多内容。。。一、const与宏的区别(面试题):const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。编译时刻:宏是预编译(编译之前处理),co转载 2016-07-18 18:00:10 · 437 阅读 · 0 评论 -
iOS8区域定位CLVisit的了解
在很多应用,使用位置定位来判断用户是不是在某个期望的地理位置。概念上说,你会将这个行为想成名词“现场”或者是“访问”而不是原生的GPS定位。略一段。。在iOS8中,大苹果为我们解决此类问题提供了CLVisit,一个新的后台定位监测类型。一个但一个的CLVisit表示用户花了一段时间在一个单一的地方,包含了同一地理坐标以及起始/结束时间戳。理论上来说,使用访问监控不会比其他的后台定位做更转载 2016-07-06 15:53:13 · 1070 阅读 · 0 评论 -
你真的了解iOS代理设计模式吗?
在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数。这篇文章会涵盖代理的使用技巧和原理,以及代理的内存管理等方面的知识。我会通过这些方面的知识,带大家真正领略代理的奥妙。写的有点多,但都是干货,我能写下去,不知道你有没有耐心看下去。本人能力有限,如果文章中有什么问题或没有讲到的点,请帮忙指出,十分感谢!iOS中消息传递方式在iOS转载 2016-06-28 16:17:36 · 643 阅读 · 0 评论 -
iOS将UIImage设置为圆角
UIImage+wiRoundedRectImage.h#import @interface UIImage (wiRoundedRectImage)+ (id)createRoundedRectImage:(UIImage*)image size:(CGSize)size radius:(NSInteger)r;@end UIImage+wiRounded转载 2016-06-28 15:51:11 · 2885 阅读 · 0 评论 -
UIImage图片处理(更改颜色,修改透明度,缩小,合并图片)
//遍历图片像素,更改图片颜色void ProviderReleaseData (void *info, const void *data, size_t size){ free((void*)data);}- (UIImage*) imageBlackToTransparent:(UIImage*) image{ /转载 2016-06-27 23:07:18 · 2404 阅读 · 0 评论 -
单例宏的书写
单例模式是iOS开发中常见的设计模式,怎么样快速创建单例宏呢?方法如下://-------------------------------------------------------------//@name 单例宏//-------------------------------------------------------------#undef H_SINGLETO原创 2016-06-27 14:20:31 · 406 阅读 · 0 评论 -
IOS学习之蓝牙4.0 BLE
转载请注明出处http://blog.csdn.net/pony_maggie/article/details/26740237作者:小马IOS学习也一段时间了,该上点干货了。前段时间研究了一下IOS蓝牙通讯相关的东西,把研究的一个成果给大家分享一下。 一 项目背景简单介绍一下做的东西,设备是一个金融刷卡器,通过蓝牙与ip转载 2016-06-27 12:50:57 · 593 阅读 · 0 评论 -
UIAlertController代替UIAlertView
iOS9以后创建UIAlertView时会出现警告,苹果对UIAlertView进行了优化,添加了UIAlertController,下面是UIAlertController的实现方法:1、创建一个UIAlertController 并设置标题和提示信息UIAlertController *alertController = [UIAlertControlleralertControl原创 2016-06-24 14:44:40 · 2012 阅读 · 0 评论 -
改变UINavigationBar导航条标题颜色和字体
UINavigationController 可以 改变UINavigationBar导航条标题颜色和字体 [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:0原创 2016-06-24 13:01:17 · 2028 阅读 · 0 评论 -
获取Storyboard里面的单独控制器
第一步:要获取单独控制器所在的UIStoryboardUIStoryboard *story = [UIStoryboardstoryboardWithName:@"Main"bundle:nil];第二步:获取该控制器的Identifier并赋给你的单独控制器 YYJumpToShareViewController *vc = [storyinstantiateView原创 2016-06-24 10:37:52 · 4162 阅读 · 0 评论 -
OC中类别和继承的区别
1、 类别(category)和继承的区别*类别:类别是对一个功能完备的类的一种补充,就像是一个东西的主要基本功能都完成了,可以用类别为这个类添加不同的组件,使得这个类能够适应不同情况的需求。比如animal这个类,具有eat和run等方法,想给这个类添加一个bark的方法,可以用类别。*继承:多个类具有相同的实例变量和方法时,考虑用继承。即子类可以继承父类的相同特性。如animal具转载 2016-01-29 11:32:09 · 703 阅读 · 0 评论 -
storyBoard编程通过performSegueWithIdentifier传参数
在跳转 控制器的 类里面写此方法- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if ([segue.identifierisEqualToString:@“toVc"]) {////这里toVc是拉的那条线的标识符 TheViewCon原创 2016-06-29 09:45:24 · 4354 阅读 · 0 评论 -
MAC环境下配置Ruby环境
步骤1 - 安装 RVMRVM 是干什么的这里就不解释了,后面你将会慢慢搞明白。 $ curl -L https://get.rvm.io | bash -s stable期间可能会问你sudo管理员密码,这里可能需要等待一段时间后就可以成功安装好 RVM。案例信息如下:lihuifengdeMacBook-Pro:~ lihuifeng$ curl -L转载 2016-02-14 14:58:41 · 3378 阅读 · 0 评论 -
MJRefresh详解
下拉刷新01-默认self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ // 进入刷新状态后会自动调用这个block}];或// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)self.tableView.heade转载 2016-06-30 10:25:18 · 527 阅读 · 0 评论 -
获取当前系统时间戳的方法
1、第一种方式 NSDate* dat = [NSDatedateWithTimeIntervalSinceNow:0]; NSTimeInterval a=[dattimeIntervalSince1970]; NSString *timeString = [NSStringstringWithFormat:@"%.0f", a]; DLog(原创 2016-07-07 11:40:51 · 1831 阅读 · 0 评论 -
CocoaPods安装和使用教程
http://code4app.com/article/cocoapods-install-usageCocoaPods是什么?当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思转载 2016-01-28 18:34:57 · 548 阅读 · 0 评论 -
设置UITableView单元格分割线长度
大家知道,目前UITableView中单元格的分割线是距屏幕左边框有一定距离的,而有些需求要求我们UITableView的分割线距左右边距都为零,其实很简单,具体做法如下: 找到需要改分割线样式的类.m文件,在文件里添加方法: - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewC原创 2016-01-27 10:51:40 · 946 阅读 · 0 评论 -
iOS文字实现超链接
最近在开发中遇到了文字实现超链接的功能,以前学习过RTLabel,知道能用它做超链接,具体该怎么操作呢?下面我来一一讲解:1、需要创建一个txt的文本文件,文件内容需要写成下面的Html格式(本人对html不是很了解,只知道一些简单的标签)点击下面你会跳转到百度网页:www.baidu.com 。如果你要用到文字跳转的话只需要将网站的地址进行修改就行了,如果还需要添加描述文字可以在标签原创 2016-01-26 18:02:32 · 6689 阅读 · 0 评论