自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 React Native学习 - 加入redux

 这是非常简单的一个项目, 就是一个计数器, 只有两个文件package.json和index.ios.js, 点击加1按钮数字值就会+1, 点击减1按钮数字值就会-1, 点击归零按钮则数字值置为0;index.ios.js代码:import React, { Component } from 'react';import { AppRegistry, StyleShe...

2018-08-02 16:43:19 283

原创 React Native高阶组件(HOC)模型理论与实践

什么是HOC?HOC(全称Higher-order component)是一种React的进阶使用方法,主要还是为了便于组件的复用。HOC就是一个方法,获取一个组件,返回一个更高级的组件。什么时候使用HOC?在React开发过程中,发现有很多情况下,组件需要被"增强",比如说给组件添加或者修改一些特定的props,一些权限的管理,或者一些其他的优化之类的。而如果这个功能是针对多个组件的...

2018-07-20 15:51:41 2064

原创 React Native学习九- SwipeableFlatList

React-Native 0.50+ 新添加SwipeableFlatList组件,SwipeableFlatList是在FlatList基础上添加了侧滑显示菜单的功能,类似于侧滑删除效果。它有FlatList所有的属性和方法,另外它还有三个自己的属性:1. bounceFirstRowOnMount: bool 是一个bool属性,默认是YES,表示第一次是否先滑一下FlatList的Item2...

2018-05-04 15:13:18 1525

原创 iOS 质量保障工具集

每个App自开发到上线需要经历多个阶段,每个阶段都要把握质量。作为iOS开发者除了从代码规范入手,我们也要从其他多方面提升质量。本文就介绍几款可以提升iOS质量开发的工具。git-flow由于git管理代码版本的灵活性有时会导致版本冲突、代码混乱等问题。为了更好的管理代码,大部分公司都推崇git flow的工作流程,git-flow就是为了实现这套流程的一系列git扩展命令。git-flow 并不...

2018-04-16 18:07:16 294

原创 iOS开发 Block与property

C语言内存分配Objective-C从名字来看就可以知道是一门超C语言,所以了解C语言的内存模型对于理解Objective-C的内存管理有很大的帮助。C语言内存模型图如下:从图中可以看出内存被分成了5个区,每个区存储的内容如下:栈区(stack):存放函数的参数值、局部变量的值等,由编译器自动分配释放,通常在函数执行结束后就释放了,其操作方式类似数据结构中的栈。栈内存分配运算内置于处理器的指令集,...

2018-04-10 16:35:29 405

原创 iOS开发 pdf文档显示和预览

前言在我们的开发中,有些像电子书类型的app的开发会涉及到pdf文档的加载与展示。由于笔者项目中正好涉及到这块,于是将pdf常用的几种加载方式做个总结。以供后面可能用到的同学做个参考。正文通常我们用到的pdf文档的加载方式有4种:UIWebView加载本地或者网络pdf文档QLPreviewController加载pdf文档用CGContext画pdf文档,并结合U

2017-11-02 15:39:08 4556

原创 iOS开发 设置项目启动图和项目icon

@2x 为:for iPhone 6/5s/5/4s/4 @3x为:for iPhone6 plusiOS各型号尺寸类型屏幕尺寸显示像素需要倍数切图尺寸命名规范iPhone6 plus414*736@31242×22085.5Retina HD i

2017-10-23 13:58:29 412

原创 iOS开发 UIImageView的分类

一.Objective-C版.h文件#import #import #import /** * 这个分类为UIImageView添加一些有用的方法 */@interface UIImageView (WLKit)/** * 创建一个UIImageView * * @param image UIImageView的图片 * @param rect UIIm

2017-09-06 17:17:51 771

原创 iOS开发 UIView分类

一.Objective-C版.h文件#import @interface UIView (WLKit)/*属性*/@property (nonatomic, assign) CGFloat x;@property (nonatomic, assign) CGFloat y;@property (nonatomic, assign) CGFloat centerX;@prope

2017-09-06 08:58:57 486

原创 iOS开发 UILabel分类

一.Objective-C版.h文件#import /** * 这个分类为UILabel添加一些有用的方法 */@interface UILabel (WLKit)/** * 创建一个UILabel * * @param frame 文字的坐标 * @param text 文字的内容 * @param font 文字的字体 *

2017-09-04 17:44:27 687

原创 iOS开发 CGContextRef之画虚线

画虚线需要用到函数:CGContextSetLineDash此函数需要四个参数:context – 这个不用多说phase - 稍后再说lengths – 指明虚线是如何交替绘制,具体看例子count – lengths数组的长度CGContextRef context =UIGraphicsGetCurrentContext();  CGCon

2017-09-01 13:22:39 623

原创 iOS开发 CGContextRef画图使用

1.创建画布CGContextRef ctx = UIGraphicsGetCurrentContext();2.设置属性//旋转,注意:设置操作必须要在添加图形之前,如果设置在添加图形之后的话,此时它已经画完了,无效//旋转的时候,是整个layer都旋转了//旋转45度CGContextRotateCTM(ctx, M_PI_4);//缩放:x方向缩放0.5倍,y方向缩放1.

2017-08-29 17:33:16 1013

原创 iOS开发 检测用户截图

一.介绍iOS7提供一个崭新的监听用户截图的通知// This notification is posted after the user takes a screenshot (for example by pressing both the home and lock screen buttons)UIKIT_EXTERN NSNotificationName const UIApp

2017-08-28 16:05:24 439

原创 iOS开发 数据存储之WCDB的使用

一.类字段绑定在WCDB内,ORM(Object Relational Mapping)是指将一个ObjC的类,映射到数据库的表和索引;将类的property,映射到数据库表的字段;这一过程。通过ORM,可以达到直接通过Object进行数据库操作,省去拼装过程的目的。WCDB通过内建的宏实现ORM的功能。如下:新建一个Model:.h文件#imp

2017-08-25 18:03:52 7406

原创 iOS开发 数据存储之WCDB的介绍

一.介绍WCDB是一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持iOS,macOS和Android二.基本特性易用,WCDB支持一句代码即可将数据取出并组合为objectWINQ(WCDB语言集成查询):通过WINQ,开发者无须为了拼接SQL的字符串而写一大坨胶水代码ORM(Object Relational Mapping):WCDB支持灵活、易用的O

2017-08-24 15:57:02 1059

原创 iOS开发 AudioServices(音效播放)的使用

一.介绍AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service).System Sound Service是一种简单、底层的声音播放服务,但是它本身也存在着一些限制:音频播放时间不能超过30s数据必须是PCM或者IMA4格式音频文件必须打包成.caf、.aif、.wav中的一种(注

2017-08-21 17:23:43 1989

原创 iOS开发 AVPlayerViewController(视频播放)的使用

一.介绍1.在iOS9中MPMovieplayerController已经被废弃了,用来替代的是AVPlayerViewController

2017-08-14 17:48:54 853

原创 iOS开发 MPMoviePlayerController和MPMoviePlayerViewController(视频播放)的使用

一.介绍1.iOS9之前,iOS播放视频文件一般使用MPMoviePlayerViewController和 MPMoviePlayerController2.MPMoviePlayerViewController继承自UIViewController,MPMoviePlayerController继承NSObject3.MPMoviePlayerViewController里面包含了

2017-08-10 17:07:19 2048

原创 iOS开发 MFMailComposeViewController(发送邮件)的使用

一.需要导入messageUI.Frameworks(#import)二.步骤:if MFMailComposeViewController.canSendMail() { let mailCompose = MFMailComposeViewController() // 收邮件人 mailCompose.setToRecipients(["toRecipient

2017-08-09 17:55:03 1130

原创 iOS开发 MFMessageComposeViewController(发送短信)的使用

一.需要导入messageUI.Frameworks(#import)二.步骤:if NSClassFromString("MFMessageComposeViewController") != nil { if MFMessageComposeViewController.canSendText() { let messageCompose = MFMessageC

2017-08-08 18:07:44 1847

原创 iOS开发 UIReferenceLibraryViewController(词典)的使用

UIReferenceLibraryViewController能够实现在自己的应用中使用字典查询词语的含义.使用:if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:@"country"]) { UIReferenceLibraryViewController *refer = [[UIRefer

2017-08-07 15:59:32 876

原创 iOS开发 Swift3.0 Error

1.跟其它语言一样,Swift的异常处理是在程序抛出异常后的处理逻辑。.Swift提供了一流的异常抛出、捕获和处理的能力.跟Java语言类似,Swift的异常并不是真正的程序崩溃, 而是程序运行的一个逻辑分支;Swift和Java捕获异常的时序也是一样的.当Swift运行时抛出异常后并没有被处理,那么程序就会崩溃.2.在Swift语言中使用Error表示异常,作用同Java的Excepti

2017-08-04 17:02:46 322

原创 iOS开发 单例的创建

一.注意:如果不重写allocWithZone和copyWithZone的话,在调用alloc和init或者new时,会创建除单利对象外的另一个对象,这个可以通过打印对象的内存地址观察,所以注意需要复写这两个方法二.代码演示:1.OC版:static Person *person;+ (instancetype)shareInstance{ static dispatc

2017-08-03 18:00:09 210

原创 iOS开发 UIFont的基本使用

一.UIFont获取family字体for fontfamilyname in UIFont.familyNames { print(fontfamilyname) let fontNames = UIFont.fontNames(forFamilyName: fontfamilyname) for fontName in fontNames { pri

2017-08-02 18:03:42 1249

原创 iOS开发 NSFileManager的基本使用

一.NSFileManager介绍1.NSFileManager是iOS中的文件管理类2.NSFileManager可以用来进行常见的文件\文件夹操作(拷贝、剪切、创建等)二.NSFileManager方法1.判断文件是否存在//创建文件管理对象//调用defaultManager 创建一个文件管理的单例对象//单例对象:在程序运行期间,只有一个对象存在NSFileMan

2017-08-01 18:04:23 1533

原创 iOS开发 数据存储之SQLite3

一.SQLite介绍SQL(Structured Query Language),用于对数据库的操作语句(增删改查),是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中二.SQLite语言的特点1.不区分大小写(比如数据库认为user和UsEr是一样的)2.每条语句都必须以分号;结尾3.字符串需要加""或''三.SQLite中常用关键字

2017-07-31 17:25:28 535

原创 iOS开发 数据存储之FMDB

一.FMDB介绍FMDB同时兼容 ARC 和非 ARC 工程,会自动根据工程配置来调整相关的内存管理代码二.FMDB类介绍1.FMDatabase:是一个提供 SQLite 数据库的类,用于执行 SQL 语句2.FMResultSet:用在FMDatabase中执行查询的结果的类3.FMDatabaseQueue:在多线程下查询和更新数据库用到的类,它是线程安全的三.FMD

2017-07-28 18:04:21 459

原创 iOS开发 数据存储之YYCache

一.关于YYCacheYYCache由YYCache、YYDiskCache、YYMemoryCache和YYKVStorage组成,其中YYKVStorage可直接对sqlite和文件系统进行读写(YYDiskCache的底层实现)类存储方式存取速度(方式)缓存时间YYCache如果不指定存储方式,默认存入内存的时候同时写入磁盘

2017-07-27 17:59:18 3891

原创 iOS开发 数据存储之write

write写入方式:永久保存在磁盘中1.获得文件保存的路劲//使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录的全路径.该函数有三个参数,目录类型、he domain mask、布尔值.其中布尔值表示是否需要通过~扩展路径.而且第一个参数是不变的,即为NSSearchPathDirectory.在iOS中后两个参数也是不变的,即为:NSUse

2017-07-26 15:55:10 620

原创 iOS开发 数据存储之NSKeyedArchiver

NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法.前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码1.先定义一个Person类Person.h文件中@interface Person : NSObject@pr

2017-07-25 10:51:05 352

原创 iOS开发 数据存储之NSUserDefaults

NSUserDefaults:用来保存应用程序设置和属性、用户保存的数据.用户再次打开程序或开机后这些数据仍然存在.NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary.如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储.具体实现为:1.保存数据:NSUs

2017-07-24 16:35:06 361

原创 iOS开发 使用NSURLConnection实现断点续传下载

一.断点续传的原理:断点续传的原理:每次在想服务器请求下载数据的同时,要告诉服务器从整个下载文件的数据流的某个还未下载的位置开始下载,然后服务器就返回从哪个位置开始的数据流二.断点续传的实现:第一步:先声明一些属性fileprivate var totalSize: Int64 = 0 // 总大小fileprivate var currentSize: Int64 = 0

2017-07-21 10:27:50 219

原创 iOS开发 使用NSURLConnection实现下载文件

一.下载小文件1.第一种方法:直接用Data的contentsOf: URL方法// 下载小文件(方法1)class func urlConnectionDownloadSmall(_ url: String, success: @escaping (_ data: Data?) -> Swift.Void, fail: (_ error: Error) -> Swift.Void) {

2017-07-19 17:18:41 489

原创 iOS开发 使用NSURLConnection实现图片上传

一.原理1.图片上传使用的是POST请求2.请求体:通常把要上传的数据保存到请求体(HTTPBody)中,将图片编码到POST请求体中,通过请求数据一起发送到服务器3.请求头:通常存放内容类型(Content-Type)和请求体数据总长度(Content-Length)4.图片上传的请求体和请求头非常难写,格式要求非常严格,出一点错误都会造成上传失败或者请求数据失败二.格式

2017-07-17 13:49:58 714

原创 iOS开发 Swift3新特性

苹果集成Swift 3到Xcode 8 Beta在WWDC将于今年晚些时候发布的最终版本.这是该语言的第一个版本,它是开源的,在Mac OS X和Linux上都能使用.如果你从去年十二月开始迅速的进化过程,甚至已经在IBM沙盒中玩过,你知道有很多变化.如果你编译你的应用程序在Xcode 8,它会破坏你的代码.Swift 3改变可以分为两个大的部分1.移除在Swift 2.2中弃用的方法

2017-07-14 15:42:45 382

原创 iOS开发 CLPlacemark属性介绍

1.初始化:/* * initWithPlacemark: * * Discussion: * Initialize a newly allocated placemark from another placemark, copying its data. */- (instancetype)initWithPlacemark:(CLPlacemark *) placemark

2017-07-12 13:39:17 2650

原创 iOS开发 iOS10以下推送

一.注册通知权限1.iOS8以上:代码写在 AppDelegate 的 didFinishLaunchingWithOptions 方法中let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .sound, .badge], categories: [userNotific

2017-07-10 17:05:31 443

原创 iOS开发 Swift常用的内置函数

1.abs(_ x: T) -> T 返回的是数字的绝对值abs(-10) = 10abs(34) = 342.assert(_ condition: @autoclosure () -> Bool, _ message: @autoclosure () -> String = default, file: StaticString = #file, line: UInt = #line

2017-07-07 14:20:17 264

原创 iOS开发 二维码扫描和生成

一.二维码扫描1.第一种方法:需要引入ZXingObjC(系统版本是iOS 8以下的)/** * 从图片中读取二维码 这是iOS7以后的方法 * * @param qrImage 一张二维码图片 * * @return 二维码信息 */+ (NSString *)scQRReaderForImage:(UIImage *)qrImage{ if (qrIma

2017-07-05 16:46:56 882

原创 iOS开发 GCD一些常用的方法

1.创建主线程(串行)dispatch_async(dispatch_get_main_queue(), ^{ //刷新界面代码 });2.创建异步线程(并行)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //比较耗时的代码放这里

2017-06-27 18:10:55 339

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除