IOS软件开发
文章平均质量分 75
itiapp_home
欢迎访问我的私人博客http://ysui.cn
展开
-
新浪微博-首页的普通文本转换富文本
主要是利用正则表达式,匹配是否有【】,但是正则表达式只能反别获取匹配的字符串,和不匹配的字符串,需要匹配两次,需要把每一次取出来的的字符串和范围和是否是表情的bool值,这时候自定义一个模型@interface LSRegexResult : NSObject//匹配到的字符串@property (nonatomic, copy) NSString *string;//匹配到的范围@p原创 2015-11-03 14:55:19 · 1569 阅读 · 0 评论 -
常用正则表达式
一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$正数、负数、和小原创 2016-03-24 16:50:08 · 337 阅读 · 0 评论 -
iOS中常用小知识点
CocoaPods安装及使用1.查看下当前ruby版本 ruby -v2.更新ruby 终端输入如下命令(把Ruby镜像指向taobao,避免被墙,你懂得) gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.org/ gem sources -l原创 2016-03-24 17:20:58 · 350 阅读 · 0 评论 -
升级到Xcode8注释快捷键不能使用的解决方法
这个是因为苹果解决xcode ghost。把插件屏蔽了。解决方法命令运行: sudo /usr/libexec/xpccachectl 然后必须重启电脑后生效原创 2016-09-14 14:08:38 · 3804 阅读 · 1 评论 -
iOS开发 内购流程 App中嵌入应用商店
iOS开发 内购流程原创 2016-09-18 11:21:52 · 1793 阅读 · 0 评论 -
ApplePay集成教程
Apple Pay运行环境:iPhone6以上设备,操作系统最低iOS9.0以上,部分信息设置需要iOS9.2以上。目前还不支持企业证书添加。环境搭建好后可以在模拟器上面运行,xcode7.2.1+iPhone6SP9.2系统下,系统会绑定几种虚拟的银行卡,和几个联系人,方便调试,支付也不会发生真实的付款,真的很方便。准备工作在接入Apple Pay之前,首先要申请Merchant原创 2016-09-06 12:57:11 · 935 阅读 · 0 评论 -
iOS项目的本地化处理(多国语言)
iOS项目的本地化处理(多国语言)项目的本地化就是:iOS系统在不同语言环境下自动切换语言,从而实现一个app发布到全世界各个国家的AppStore上。我们不仅仅需要在iOS项目中做本地化处理,在上架iOS APP的时候,也需要做对应的本地化设置哦。iOS项目中需要处理的本地化大概有以下几点:1.APP名称2.字符串3.图片4.sto原创 2016-11-18 17:52:15 · 1615 阅读 · 0 评论 -
iOS 多线程 锁 互斥 同步
在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题:方法一,@synchronized(id anObject),(最简单的方法)会自动对参数对象加锁,保证临界区内的代码线程安全[cpp] view plain copy print?@synchronized(self) { /转载 2017-02-08 11:22:37 · 354 阅读 · 0 评论 -
XCODE打包常见问题
1、使用Application Loader 发布时报错:Communication error.please use diagnostic mode to check connectivity.you need to have outbound access to tcp port 443. 这个问题可能是网络造成的,我电脑用了用于翻长城的代理工具,取消系统代理就好了。转载 2017-02-13 14:37:01 · 1157 阅读 · 0 评论 -
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
Xcode升级到8.3后 用命令进行打包 提示下面这个错误xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH后面根据对比发现新版的Xcode少了这个PackageApplication先去找个旧版的Xcode里面copy一份过来放到下面这个目录:原创 2017-04-19 15:10:18 · 15223 阅读 · 2 评论 -
Cocopods安装使用和错误
Cocopods的安装CocoaPods应该是iOS最常用最有名的类库管理当我们开发iOS应用时,会经常使用到很多第三方开源类库,比如AFNetWorking等等,可能某个类库又用到其他的库,手动一个个去下载所需类库十分麻烦。如果我们项目中用到的类库有更新,还要重新下载新版本,重新加入到项目中,十分麻烦。所以,我们需要 CocoaPods帮我们管理。如何下载和安装CocoaPods转载 2017-05-08 12:06:49 · 507 阅读 · 0 评论 -
利用xocdebuild打包
简介xcodebuild 是苹果发布自动构建的工具。它在一个Xcode项目下能构建一个或者多个targets ,也能在一个workspace或者Xcode项目上构建scheme,总的来说,用它没错就是了。用法说明Tips:在终端输入man xcodebuild,可以看到Description里面有介绍用法。也可以看官方文档当你想构建一个Xcode项目,在项目目录下运行x原创 2017-08-14 10:14:35 · 759 阅读 · 0 评论 -
Xcode多种Build Configuration配置使用
Build Configuration?Xcode默认会有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序,编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。pic1.png使用场景我自己碰到的使用场景是,我司的域名有3套:针对开发时的域名针对预上线时的域名针对上线时对外公开的域名转载 2017-08-14 12:08:04 · 1133 阅读 · 0 评论 -
iOS中飞行模式或无网提示
在ios设备没有网络的情况下,在app中如何弹出设置无线网络的提示框这种情况基本上有两种解决方案方案一:适用范围:ios5.0及之前的iOS版本方法:这是一个广为流传的办法,不再赘述,自己写一个alert,点击按钮的代理中加入如下代码,系统会自动跳转[[UIApplicationsharedApplication] openURL:[NSURLURLWithString原创 2016-03-24 16:38:09 · 2098 阅读 · 0 评论 -
当前主流的导航控制器手势滑动效果
效果图技术点1.当滑动时的上一界面view是怎么出来的2.每一个控制器界面的导航栏颜色为什么不同,pop回来还不会变github地址https://github.com/lsmakethebest/LSNavigationBarTransition具体实现思路就是重写父类的push pop方法在push时对屏幕截图,滑动屏幕时显示截的图,pop时移除截图,多原创 2016-03-06 19:45:00 · 1014 阅读 · 0 评论 -
iOS中常用几种支付方式
支付宝使用支付宝进行一个完整的支付功能,大致有以下步骤:1>先与支付宝签约,获得商户ID(partner)和账号ID(seller) (这个主要是公司的负责) 2>下载相应的公钥私钥文件(加密签名用) 3>下载支付宝SDK 4>生成订单信息 5>调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道 6>支付完毕后返回支付结果给商户客户端和服务器在实现支付宝过程转载 2016-03-06 18:50:42 · 4412 阅读 · 0 评论 -
新浪微博-首页富文本的事件处理
首页显示富文本用的是textView控件,因为需要用到textView的selectionRectsForRange,有时候一个超链接或话题检测出来换行了,这时候就是两个矩形,而selectionRectsForRange就具有这个功能可以检测出某段文本的矩形数组,首先算出此富文本中有多少个链接Link(话题,超链接,@),遍历富文本,取出之前添加的属性键值,如果为真则是一个Link,则创建一个L原创 2015-11-03 16:03:12 · 1042 阅读 · 1 评论 -
浅谈runtime
什么是runtime?1->runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型、C语言函数)2->实际上,平时我们编写的OC代码,底层都是基于runtime实现的也就是说,平时我们编写的OC代码,最终都是转成了底层的runtime代码(C语言代码)runtime有啥用?1> 能动态产生一个类、一个成员变量、一个方法2> 能动态修改一个类、一个成员变原创 2015-11-04 12:41:34 · 370 阅读 · 0 评论 -
XMPP获取用户信息及修改用户信息
XMPP默认没有导入电子名片模块,所以得自己手动在XMPPFramework.h里导入#import "XMPPvCardTempModule.h" //电子名片模块#import "XMPPvCardCoreDataStorage.h" //电子名片存储模块#import "XMPPvCardAvatarModule.h" //电子名片头像模块电子名片的获取过程是发起请求给服务器原创 2015-11-04 21:06:10 · 3038 阅读 · 2 评论 -
IOS中Socket的使用
@interface ViewController (){ NSInputStream *_inputStream; NSOutputStream *_outputSteam;}@property (weak, nonatomic) IBOutlet UITableView *tableView;@property (weak, nonatomic) IBOutlet NSLayout原创 2015-11-01 15:40:41 · 494 阅读 · 0 评论 -
XMPP协议获取花名册(好友列表)
首先导入花名册模块,理由同上篇文章,这里不再具体说明// 花名册模块#import "XMPPRoster.h"#import "XMPPRosterCoreDataStorage.h"初始化花名册模块,并激活//设置花名册模块 self.rosterStorage=[[XMPPRosterCoreDataStorage alloc]init];原创 2015-11-04 21:19:31 · 1245 阅读 · 0 评论 -
XMPP协议发送聊天消息,图片,文件
首先导入头文件/** *聊天消息模块 */@property (nonatomic, strong) XMPPMessageArchiving *msgArc;/** *聊天消息存储模块 */@property (nonatomic, strong) XMPPMessageArchivingCoreDataStorage *msgStorage;设置聊天消息模块,并激原创 2015-11-07 20:35:32 · 4405 阅读 · 0 评论 -
蘑菇街瀑布流的实现
蘑菇街利用UIScrollView(基本和tableView一样实现重用) 实现思想为第一次或刷新时计算frame,同时用一个数组存放frame**计算思路。**用一个c语言数组存放每一列图片的最大Y值每一个cell计算Y值时都算出哪一列的y值最小,计算出来并把此frame设置为对应列的最大y值全部算完计算contentsizeUIScrollView比较特殊,layoutsubviews在每次滚原创 2015-11-01 14:44:58 · 823 阅读 · 0 评论 -
GCDAsyncSocket的使用
@interface ViewController (){ NSInputStream *_inputStream; NSOutputStream *_outputSteam; GCDAsyncSocket *_socket; } * 存储所有聊天数据的数组 */ @property (strong, nonatomic)NSMutableArray *m原创 2015-11-01 16:30:52 · 447 阅读 · 0 评论 -
SQLite3的使用
// 拼接数据库地址 NSString *path =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; NSString *sqlFile = [path stringByAppendingPathComponent:@student.sqlite];原创 2015-11-01 14:36:15 · 355 阅读 · 0 评论 -
FMDB的使用
1.实例化FMDatabase//path NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; //dbPath: 数据库路径,在Document中。NSString *dbPath = [documentDir原创 2015-11-01 14:37:22 · 282 阅读 · 0 评论 -
CoreData的使用
(void)openDB { // 创建数据库 // 1. 实例化数据模型(将所有定义的模型都加载进来) // merge——合并 NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; // 2. 实例化持久化存储调度,要建立起桥梁,需要模型 NSPersiste原创 2015-11-01 14:40:16 · 323 阅读 · 0 评论 -
新浪微博-表情键盘的显示
自定义表情键盘keyboardView,上部分为一个整体的自定义listView包括UIScrollVIew和pageControll,下部分为一个自定义的toolbar,UIScrollVIew里添加了多个gridView(即一页表情的view),每一个gridView中包含多个emotionView(自定义继承于UIButton),每一个emotionView就是一个表情,emotionVie原创 2015-11-02 16:40:53 · 693 阅读 · 0 评论 -
XMPP协议的使用(注册,登陆,注销)
利用XMPP协议简单实现登陆注销功能,一个完整的登陆过程包括初始化XMPPStream,利用用户名建立连接,建立连接成功后发送密码,XMPP默认登陆后是不在线的,所以想在线必须得自己向服务器发送在线消息,当注销时需要向服务器发送离线消息,同时断开连接,建立连接,和密码验证是否成功都是通过代理方法判断#import #import "XMPPFramework.h"typedef enum原创 2015-11-02 16:27:52 · 747 阅读 · 0 评论 -
新浪微博-表情键盘的事件处理
每一个EmotionView就是一个button,监听点击事件,把该emotionView的emotion属性通过通知发送出去,对每一页表情即GridView添加长按手势,当手势触发时遍历所有子控件,哪一个子控件的frame包含触摸点,然后把该emotionView的emotion属性通过通知发送出去,当接受到通知时判断表情的类型,来判断是插入emoji还是图片表情emotionViews是G原创 2015-11-03 14:34:59 · 702 阅读 · 0 评论 -
iOS如何防止crash,并上传bugly
1.程序中常见的crash种类有1.unSelector 方法未找到2.KVO未移除,多次添加,多次移除问题3.数组越界4.字典赋值key或value为nil5.NSString substringFromIndex 越界问题6.NSAttributedString initWithString stirng=nil问题7.通知deallooc时为移除问题2.解决方案...原创 2018-09-12 20:50:01 · 1214 阅读 · 0 评论