iOS开发
Eric博客
ios开发
展开
-
ios MVVM与reactivecocoa
原文由Colin Eberhardt发表于raywenderlich,ReactiveCocoa Tutorial – The Definitive Introduction: Part ½在编写iOS代码时,我们的大部分代码都是在响应一些事件:按钮点击、接收网络消息、属性变化等等。但是这些事件在代码中的表现形式却不一样:如target-action、代理方法、KVO、回调或其它。转载 2016-06-22 11:42:01 · 1307 阅读 · 0 评论 -
使用Carthage管理iOS第三方库
最近在研究Swift,一不小心发现一个好的的管理iOS第三方库Carthage,就跟第一次使用CocoaPods时一样兴奋不已,在研究了大半天后终于能用了,使用起来还是很方便的,比起CocoaPods有不足也有优点,两个配合起来用也是很爽的^ - ^初识Carthage最近在用Swift3.0做项目,想导入一些支持Swift3.0的第三方库来使用,就想到Alamofire,看R转载 2016-10-18 11:40:11 · 456 阅读 · 0 评论 -
iOS使用UITabbarController跳转(push)界面,如何自动隐藏底部tabbar?
一、首先简单地讲一下UITabbarController的使用方法,直接上代码://初始化tabbarcontroller- (void)setTabbarController{ NSArray *array = @[contactsNav, businessNav, infoNav, myCoffeeNav]; _tabBarController = [[UITabBarC原创 2016-10-19 14:18:09 · 9147 阅读 · 0 评论 -
iOS如何自定义的设置UITabbarItem的badge
本文的代码实现效果如下:除了第三个tabbarItem显示数字,其他的都显示红点代码如下://tabbar消息未读数量- (void)showUnreadCountViewItemNO:(NSInteger)index unReadCountSum:(NSInteger)unReadCountSum { UILabel *bageView = (UIL原创 2016-10-19 14:33:40 · 2220 阅读 · 0 评论 -
iOS发送本地通知
//发送本地推送,使用环信sdk- (void)showNotificationWithMessage:(EMMessage *)message{ EMPushOptions *options = [[EMClient sharedClient] pushOptions]; [[UIApplication sharedApplication] cancelAllLocalNoti原创 2016-10-20 10:48:26 · 1146 阅读 · 0 评论 -
UITextField进入编辑状态文字向下偏移
在使用UITextField的时候,在非编辑状态textField中有内容显示,当点击编辑时候文本向下偏移,处理方法如下:1.调整UITextField的样式,外框尽量的大些,防止遮住字,然后选择style,如图所示:2.然后在代码中需要将border外框去掉[self.textField.subviews[0] removeFromSuperview];ok原创 2016-12-28 14:19:42 · 3094 阅读 · 3 评论 -
UITextField实时跟踪输入文字的个数,超过禁止输入并阶段(UITextView也可以使用类似方法)
UITextField#pragma mark - UITextFieldDelegate- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if(textField == self.n原创 2017-02-07 10:35:25 · 541 阅读 · 0 评论 -
UITableViewCell中使用nib布局设置一个UILabel的背景颜色,出现色差
在UITableViewCell中使用nib布局设置一个UILabel的背景颜色,出现色差如何解决? tableview的背景颜色和label的颜色色值设置一样,但是运行看效果后,发现不一样,然后在nib中各种的设置,最终还是不行,最后在代码中iboutlet关联label,在代码中设置label的背景颜色就ok了。 不知道还有没有其他的解决方法,坐等。。。 解决方法:...原创 2017-01-18 09:34:56 · 482 阅读 · 0 评论 -
今日头条iOS客户端启动速度优化
本文转载:https://techblog.toutiao.com/2017/01/17/iosspeed/应用启动时间,直接影响用户对一款应用的判断和使用体验。头条主app本身就包含非常多并且复杂度高的业务模块(如新闻、视频等),也接入了很多第三方的插件,这势必会拖慢应用的启动时间,本着精益求精的态度和对用户体验的追求,我们希望在业务扩张的同时最大程度的优化启动时间。技术调研转载 2017-02-10 11:43:16 · 7950 阅读 · 2 评论 -
iOS webview 获取html中所有的图片资源,图片添加点击方法
- (void)webViewDidFinishLoad:(UIWebView *)webView{ //这里是js,主要目的实现对url的获取 static NSString * const jsGetImages = @"function getImages(){\ var objs = document.getElementsByTagName(\"img\原创 2016-10-25 16:22:33 · 3890 阅读 · 0 评论 -
iOS开发 适配iOS10以及Xcode8(二)
随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出.1.系统判断方法失效:在你的项目中,当需要判断系统版本的话,不要使用下面的方法:#define isiOS10 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]转载 2016-09-19 13:17:48 · 2121 阅读 · 0 评论 -
ReactiveCocoa入门教程——第一部分
本文翻译自RayWenderlich ReactiveCocoa Tutorial – The Definitive Introduction: Part 1/2作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation)。但是这些事件都用不同的方式来处理,比如a转载 2016-08-08 11:48:16 · 502 阅读 · 0 评论 -
ReactiveCocoa入门教程——第二部分
本文翻译自RayWenderlich ReactiveCocoa Tutorial – The Definitive Introduction: Part 2/2 ReactiveCocoa是一个框架,它能让你在iOS应用中使用函数响应式编程(FRP)技术。在本系列教程的第一部分中,你学到了如何将标准的动作与事件处理逻辑替换为发送事件流的信号。你还学到了如何转换、转载 2016-08-08 11:49:48 · 665 阅读 · 0 评论 -
iOS开发学习-推荐几个自己经常去的一些博客和网站
推荐几个自己经常去的一些博客和网站唐巧的技术博客objc中国Ray WenderlichCocoaDocs.orgNSHipsterLuke's HomepageCocoabit | 做自己喜欢的事情原创 2016-08-08 15:12:29 · 1862 阅读 · 0 评论 -
在iOS开发中使用FMDB
前言SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK 很早就支持了 SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的 SQLite API 在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将 SQLite API 进行封装的转载 2016-08-08 16:01:38 · 1617 阅读 · 0 评论 -
iOS应用内付费(IAP)开发步骤列表
配置Developer.apple.com登录到Developer.apple.com,然后进行以下步骤:为应用建立建立一个不带通配符的App ID用该App ID生成和安装相应的Provisioning Profile文件。配置iTunes Connect登录到iTunes Connet,然后进行以下步骤:用该App ID创建一个新的应用。在该应用中,创建应用内付费项转载 2016-08-08 16:14:43 · 1724 阅读 · 0 评论 -
iOS开发-Realm数据库
RealmRealm-Object-c,见:https://realm.io/cn/docs/objc/latest/Realm官网:https://realm.io使用流程导入头文件#import .创建类,继承于RLMObject.在类中生成数据模型.在需要的地方创建实例,使用Realm方法调用.数据模型创建简单数据模型简单地,继承RLMObject创建转载 2016-08-08 16:27:13 · 1733 阅读 · 0 评论 -
友盟社会化分享遇到的问题
环境:xcode7.0 模拟器 releaseUndefined symbols for architecture i386: "_OBJC_CLASS_$_QQApiAudioObject", referenced from: objc-class-ref in libSocialQQ.a(UMSocialQQHandler.o) "_OBJC_CLASS_$_Q原创 2016-09-05 09:54:15 · 3158 阅读 · 2 评论 -
iOS开发 适配iOS10以及Xcode8
iOS开发 适配iOS10以及Xcode8现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本,童鞋们有木有下载过来试试呢?就我的使用来说,总体觉得苹果还是坑不断,但是也在一直进步的啦。下面我就来说说,iOS10的适配以及Xcode8使用转载 2016-09-19 11:56:22 · 429 阅读 · 0 评论 -
UITableView性能优化,超实用
1. Cell重用 1.1>数据源方法优化- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;11 在可见的页面会重复绘制页面,每次刷新显示都会去创建新的Cell,非常耗费性能。 解决方案:首先创建一个静态变转载 2017-03-09 15:29:01 · 13378 阅读 · 0 评论 -
iOS-支付宝&微信支付
一. 微信支付1.所需要的材料微信SDK微信SDK在微信开放平台上面申请得到的参数// 应用的APPIDkWXAppID @"wxc82cXXXXXXXX"// AppSecretkWXAppSecret @"7f47bfe47b84XXXXXXXXXXXx"//商户号kWXMchID @"1242XXXXXX"//商户API密钥kWXP转载 2017-06-02 18:00:27 · 5053 阅读 · 0 评论 -
2017 iOS 开发 33 款主宰的开源库
1. IGListKit由 Instagram 开发人员制作,IGListKit 是用于构建快速灵活列表的数据驱动型的 UICollectionView 框架。此外,它可以帮助你在应用程序中避免大量使用视图控制器的情况。可查看 Ray Wenderlich 上的关于在你的项目中实现该库的教程,或者从 Rodrigo Cavalcante 中看看关于将现有的转载 2017-06-27 13:22:17 · 363 阅读 · 0 评论 -
iOS使用HTTPS之AFNetworking
公司是做P2P的,目前需要做安全审核备案,所以需要服务器和前段使用HTTPS。以前针对iOS9.0对ATS做过适配,允许http和https同时使用。所以为了备案,必须使用https,需设置成YES。项目使用的是单向认证1.获取证书.cer 后台服务器运维工程师提供;或者自己使用chrome浏览器获取,步骤如下: 首先在浏览器中输入https://www.xxxx.cn你项目的网址,在网页中点击右...原创 2018-03-13 10:24:30 · 1346 阅读 · 0 评论 -
iOS开发的知名个人博客及几个网站
网站推荐https://www.raywenderlich.com/https://talk.objc.io/https://objccn.io/http://gold.xitu.io/网站不在于多,能经常去翻看这四个网站的文章,对个人提升帮助是很大的GitHub Repo推荐iOS-Source-Code-Analyze 开源框架阅读笔记iOS-Tech-Weekly 技术周报, 整合了一周不...转载 2018-03-20 14:16:26 · 651 阅读 · 0 评论 -
成为更高级别的iOS开发工程师,你需要掌握的地方
欢迎诸位在评论中添加补充熟练掌握C/C++/Objective-C/Swift语言;熟悉Cocoa Touch(Foundation,UIKit)、Objective-C中block,gcd,NSOperation等;熟悉Object消息传递等机制,Objective-C Runtime,阅读源码;熟练使用大部分iOS平台常用库,开源库(AFNetworking,SDWebImage,fmdb),...转载 2018-03-26 13:39:17 · 709 阅读 · 0 评论 -
iOS运行时--替换方法
如果你想修改现有类的一些方法时,可以使用OC的运行时特性,去替换想要修改的方法。这里使用NSURL类做示例:在模拟器中运行下面一段代码:NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/人民币"];NSURLRequest *request = [NSURLRequest requestWithURL:url];NS...原创 2018-07-17 17:34:15 · 2387 阅读 · 0 评论 -
使用GCD单个页面多个网络请求的情况(依次调用接口),等待所有网络请求结束后,再刷新UI
#pragma mark - 单个页面多个网络请求的情况(依次调用接口),等待所有网络请求结束后,再刷新UI- (void)loadHttpData{ dispatch_group_t group = dispatch_group_create(); dispatch_queue_t searialQueue = dispatch_queue_create("com.hm...原创 2018-07-24 11:32:13 · 3952 阅读 · 0 评论 -
ios 基础知识点总结
1、设置UILabel行间距NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:label.text]; NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; ...转载 2018-07-24 12:00:07 · 2747 阅读 · 1 评论 -
UITableView优化--使用runloop,优化耗时较多的事件
处理逻辑:runloop运行循环,每次循环的时候都会处理多个cell的显示,现在需要每次循环只处理一个cell的显示头文件.h//// HMCRunLoopTask.h// test//// Created by 胡梦驰 on 2018/7/13.// Copyright © 2018年 胡梦驰. All rights reserved.//#import <Foun...原创 2018-07-13 17:53:41 · 1464 阅读 · 0 评论 -
升级到XCode 10.0 原来的程序报错误:library not found for -lstdc++.6.0.9
升级到XCode 10.0 原来的程序报错误如下:ld: library not found for -lstdc++.6.0.9clang: error: linker command failed with exit code 1 (use -v to see invocation)解决方法:1、找到error,然后单击右键,选择弹出框中的Reveal in Log查看错误,发...原创 2018-09-20 11:27:39 · 6297 阅读 · 0 评论 -
iOS 11.0之后,UIScrollView顶部空20像素
最近在做一个项目,运行在iOS11.0的模拟器上时候,发现UIScrollView顶部预留出20像素像是电池栏,虽然布局的时候frame.y=0,但还是空出20像素:解决方法1.布局的时候,frame.y=-20,开始布局2.设置contentInsetif(IOS_X>11.0){ self.scrollView.contentInset = UIEdgeIn原创 2017-11-29 16:50:21 · 5048 阅读 · 1 评论 -
iOS h5与原生态混编
h5与原生态混编,一般情况下是在VC中插入一个webview,在webview(网上第三方比较好的WKWebView网页视图)中加载h5的地址url,使用的功能大部分主要分为:1、原生oc调用js 在网页加载完成之后,在成功回调方法中:- (void)webViewDidFinishLoad:(UIWebView *)webView{ NSString *jsStr = [NS原创 2017-10-20 16:52:44 · 1314 阅读 · 0 评论 -
iOS字符串的拆分
- (void)separateString{ //字符串"A,B,C,D"由统一的符号间隔组成,拆分成A、B、C、D NSString *string1 = @"A,B,C,D"; NSArray *array1 = [string1 componentsSeparatedByString:@","]; NSLog(@"%@", array1);原创 2017-07-31 16:30:28 · 3504 阅读 · 0 评论 -
UITextView实时跟踪输入文字的个数,超过禁止输入并阶段
#pragma mark - UITextViewDelegate- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ if([text isEqualToString:@"\n"]){ [textVi原创 2017-07-31 16:34:30 · 332 阅读 · 0 评论 -
使用git报错error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out
使用git clone代码的时候报如下错误:Cloning into 'FanHeIOSV2'...error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-outfatal: The remote end hung up unexpectedly解决办法,只原创 2017-08-07 18:11:50 · 16343 阅读 · 4 评论 -
iOS设计模式(一)----单例模式
一、什么是单例模式?单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例。二、单例模式的优点1.在内存中只有一个对象,节省内存空间;2.避免频繁的创建销毁对象,可以提高性能;3.避免对共享资源的多重占用。可以全局访问。三、适用场景1.需要频繁实例化然后销毁原创 2017-08-03 14:18:20 · 238 阅读 · 0 评论 -
iOS设计模式(二)----工厂模式
一、什么是工厂模式?通过面向对象的封装,继承和多态来降低程序的耦合度,将一个具体类的实例化交给一个静态工厂方法来执行。简单的理解就是把创建对象的方法封装在实例方法中,类似工厂生产直接获取产品,只需要你告诉你需要什么样的产品,这个生产过程是在工厂内完成实现的。二、工厂模式优点最大的优点就是简单,把创建对象方法封装,告诉需要的对象类型,直接获取到对象;还有工厂类是整个模式的关键原创 2017-08-03 16:28:04 · 200 阅读 · 0 评论 -
浅谈iOS社交类个人主页界面的布局解析
最近在做一款社交类的应用app“金脉+”(欢迎诸位下载使用,点评),社交类的应用难免都会有个人主页的介绍展示界面,本应用经过产品部和设计部的最终确定如下界面:实现功能及效果:导航栏根据滚动显示背景色,概览动态人脉菜单栏滑动到顶部保持不变,概览分支总体包含模块:供需、工作经历、个人介绍、个人荣誉、标签、个人相册、好友评价等,动态分支只有动态模块,人脉分支又包含:人原创 2017-07-27 14:14:43 · 2183 阅读 · 0 评论 -
iOS10.3的应用内评分SKStoreReviewController
1.首先引入头文件: #import 2.在需要的地方调用方法: [SKStoreReviewControllerrequestReview];原创 2017-07-27 14:59:15 · 653 阅读 · 0 评论 -
iOS viewcontroller中的dealloc方法不调用
ios的viewcontroller生命周期是 init -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidAppear -> viewDidUnload -> dealloc当我们使用NSNotificationCenter方法,可以在viewDidLoad原创 2017-07-28 15:03:42 · 4252 阅读 · 0 评论