自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mac安装cocopods

1.打开终端,查询ruby版本.因为mac自带ruby环境.所以我们输入ruby -v当终端中这样显示的话就证明Mac下自带ruby环境.2.终端中输入命令sudo gem install cocoapods输入完之后会显示让用户输入密码,密码输入完成之后会有一个短暂的寂静.这时需要耐心等待一下来判断是否需要更换ruby镜像.如果等待一会儿还是毫无反应,那...

2019-11-05 08:47:46 1081

原创 iOS 语音合成支持后台和锁屏情况

最近有一个需求,就是要加入语音合成,并能够在进入后台或者锁屏之后能够播报,现在最流行的应该就是科大讯飞了,功能强大,用起来简单,但是如果只要简单的TTS功能就没有必要集成其他的SDK了,iOS中提供好的API就可以了。AVSpeechSynthesizer这个类可以用来播放一个或者多个语音内容,播放的语音内容都是通过实例化AVSpeechUtterance而得到,对于一个或者多个AVSpe...

2019-01-10 14:18:31 1401

原创 textView 键盘变发送,置灰发送,小细节优化

最近在做发表回复评论这样的功能,总结了一点小小的知识点,写下来方便以后查找1,将UITextView 弹起的键盘换行按钮变成发送按钮,这个只要改变一个属性即可_textView.returnKeyType = UIReturnKeySend;这个属性是一个枚举类型,可以根据自己的需要去进行设置typedef NS_ENUM(NSInteger, UIReturnKeyType)...

2018-10-15 17:19:07 1803

原创 iOS 支付宝支付及授权

这篇博客只是讲解了客户端如何接入下载支付的SDK[https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1](https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1)...

2018-09-04 23:34:15 3661

原创 iOS 跳转到AppStore进行评分

跳转到AppStore评分:跳转到AppStore,进行评分;如何获得APPID在https://itunesconnect.apple.com中创建应用即可在应用界面获得 NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@?action=write-rev...

2018-09-04 09:37:53 886

原创 xcode打包directory not found for option Release-iphoneos

最近开发项目的完成第一版,要打包进行测试,觉得应该不会出现什么问题吧,等待过程中突然报错这个是什么情况,于是通过各种办法来找解决办法,在网上有很多的解决办法,一一试过了都不好用,各种重启、删除、重新导入,也都不好用,真的让人崩溃啊,没有办法还是要找啊~。最终还是让我解决了这个问题,虽然我也不知道为什么,我还是说说方法吧:1.点击xcode -->preferences2.选中...

2018-08-23 15:23:45 843

原创 中文转码问题

在做sharesdk分享的过程中遇到了一个问题,就是当在url中拼接一个中文字符串的时候无法分享出去,并报出QQAPI- ConfigManager.m:113 @_@的问题,看来是一个蒙圈的表情啊,其实这个不是什么大问题,就是忘记对中文字符串进行转码,只要将stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding这样的方

2017-09-18 15:11:51 948

原创 关于 Cannot create __weak reference in file using manual reference counting及配置ReactiveCocoa

最近再看关于reactiveCocoa的用法,决定尝试使用,在cocoapods中将其集成到项目里,这里没有什么难度,但是一运行程序问题出现了,提示 Cannot create __weak reference in file using manual reference counting,解决的办法就是在Build Settings--------->Aplle LLVM版本号 -

2017-09-16 15:35:43 926

原创 swift 泛型

泛型函数泛型函数可以适用于任何类型:func swapTwoValues(_ a: inout T, _ b: inout T) { let temporaryA = aa= bb = temporaryA}func swapTwoInts(_ a: inout Int, _ b: inout Int)func swapTwoValues(_ a: inout T, _ b: inou

2017-04-17 13:25:29 931

原创 swift 协议

协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体或枚举都可以遵循协议,并未协议定义的这些要求提供具体实现。某个类型能都满足某个协议的要求,就可以说该类型遵循这个协议。除了遵循协议的类型必须实现在要求外,还可以对协议进行扩展,通过扩展来实现一部分要求或者实现一些附加功能,这样遵循协议的类型就能够使用这些功能。属性要求协议可以要求遵循协议的

2017-04-14 16:09:34 494

原创 swift 扩展

扩展就是为一个已有类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力。扩展和objectvie从中的分类类似。swift中的扩展可以:添加计算类型属性和计算型类型属性定义实例方法和类型方法提供新的构造器定义下标定义和使用新的嵌套类型使一个已有类型符合某个协议在swift中,可以对协议进行扩展,提供协议要求的实现,或者添加

2017-04-06 11:16:31 348

原创 swift 类型转换

定义一个类层次作为例子你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。下面的三个代码段定义了一个类层次和一个包含了这些类实例的数组,作为类型转换的例子。第一个代码片段定义了一个新的基类MediaItem。这个类为任何出现在数字媒体库的媒体项提供基础功能。特别的,它声明了一个String

2017-03-28 15:36:30 862

原创 ios 取得当前界面方法

在项目中遇到了一个问题,就是项目的需求是在用户退到后台的时候再次进入软件要出现一个手势密码的界面,开始我是这样写的: _openLockView = [[OpenLockViewController alloc] init]; UINavigationController *openNav = [[UINavigationController alloc] initWithRoo

2017-03-28 13:56:20 1394

原创 swift 可选链式调用

可选链式调用是一种可以在当前值可能为nil的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是nil,那么调用将返回nil。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为nil,整个调用链都会失败,即返回nil。使用可选链式调用代替强制展开通过在想调用的属性,方法,或下标的可选值后面放一个问号,可以定义一个可选链。这一点很像在可选值后放一

2017-03-27 14:54:09 671

原创 swift 错误处理

错误处理是响应错误以及从错误中恢复的过程。swift提供了在运行时对可恢复错误的抛出、捕获、传递和操作的一等公民支持。某些操作无法保证总是执行完所有代码或总是生成有用的结果。可选类型可用来表示值缺失,但是当某个操作失败时,最好能得知失败的原因,从而可以做出相应的应对。举个例子,假如有个从磁盘上的某个文件读取数据并进行处理的任务,该任务会有多种可能失败的情况,包括制定路径下文件并不存在,文件

2017-03-23 13:48:47 883

原创 swift 析构器

析构过程原理swift会自动释放不需要的实例以释放资源,swift通过自动引用计数处理实例的内存管理。通常当你的实例被释放时不需要手动的去清理,但是,当使用自己的资源使,可能需要进行一些额外的清理。析构器是在实例释放发生前被自动调用,不能主动调用析构器。子类继承了父类的析构器,并且在子类析构器实现的最后,父类的析构器会被自动调用。即使子类没有提供自己的析构器,父类的析构器也同样会被调用。

2017-03-20 17:40:47 540

原创 swift 构造器

构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置实例中每个存储型属性的初始值和执行其他必须的设置或初始化工作。通过定义构造器来实现构造过程,这些构造器可以看做是用来创建特定类型新实例的特殊方法。与oc中的构造器不同,swift的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。类的实例也可以通过定义析构器在实

2017-03-19 23:59:29 522

原创 swift 继承

一个类可以继承另一个类的方法,属性和其他特性。当一个雷继承其他类的时候,继承类叫子类,被继承类叫超类。在swift中,继承是区分类与其他类型的一个基本特征。在swift中,类可以调用和访问超类的方法,属性和下标,并且可以重写这些方法,属性和下标来优化或修改他们的行为。swift会检查你的重写定义在超类中是否有匹配的定义,以此保证你的重写行为是正确的。可以为类中继承来的属性添加属性观察器,这

2017-03-14 09:44:13 615

原创 swift 下标

下标语法下标允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行存取。语法类似于实例方法语法和计算型属性语法的混合。与定义实例方法类似,定义下标使用subscript关键字,指定一个或多个输入参数和返回类型:与实例方法不同的是,下标可以设定为读写或只读。这种行为由getter和setter实现,有点类似计算属性。 struct TimesTable { let

2017-03-13 14:01:26 426

原创 swift 方法

实例方法实例方法是属于某个特定类、结构体或者枚举类型实例的方法。实例方法提供访问和修改实例属性的方法或者提供与实例目的相关的功能,并以此来支撑实例的功能。下面的例子,定义一个简单的Counter类:

2017-03-10 15:10:04 282

原创 swift 属性

存储属性简单的说,一个存储属性就是存储在特定类或结构体实例里的一个常量或者变量。存储属性可以是变量存储属性也可以是常量存储属性。可以在定义存储属性的时候指定默认值,也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值。该结构体用于描述整数的范围,这个范围值在创建后不能被修改。因为它是一个常量存储属性。 struct FixedLengthRange {

2017-03-09 14:33:01 265

原创 swift 枚举

枚举枚举实例: enum CompassPoint{ case north case south case east case west } enum Planet { case mercury,venus,earth,mars,jupiter,saturn,uranus,neptune

2017-03-07 17:56:39 222

原创 swift 闭包

闭包闭包是自包含的函数代码块,可以在代码中被传递和使用。swift中的闭包与c和oc中的代码块以及其他一些编程语言中的匿名函数比较相似。闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量。swift会为你管理在捕获过程中涉及到的所有内存操作。闭包表达式闭包表达式是一种利用简洁语法构建内联闭包的方式。闭包表达式提供了一些语法优化,使得撰写闭包变得简单明了。下面

2017-03-07 13:41:17 322

原创 swift 函数

函数的定义与调用所有的这些信息汇总起来成为函数的定义,并以func作为前缀。指定函数返回类型时,用返回箭头->后跟返回类型的名称方式来表示。 func greet(person:String) -> String { let greeting = "Hello" + person + "!" return greeting }调用:pr

2017-02-16 13:35:50 508

原创 swift switch

switch语句必须是完备的,这就是说,每个可能的值都必须至少有一个 case分支与之对应。在某些不可能涵盖所有值的情况下,可以使用默认分支来涵盖其他所有没有对应的值,这个默认分支必须在switch语句的最后面。下面的例子使用switch语句来匹配一个名为someCharacter的小写字符: let someCharacter: Character = "z" switch

2017-02-14 14:20:10 447

原创 swift 集合类型

数组数组的简单语法写swift数组应该遵循像Array 这样的形式,其中Element是这个数组中唯一允许存在的数据类型。我们也可以使用像[Element]这样的简单语法。尽管两种形式在功能上是一样的,但是推荐剪短的那种,而且在本文中都会使用这种形式来使用数组。创建一个空数组可以使用构造语法来创建一个由特定数据类型构成的空数组:var someInts = [Int]()通过构

2017-02-06 13:44:33 543

原创 swift 字符串

字符串字面量可以在代码中包含一段预定义的字符串值作为字符串字面量。字符串字面量是由双引号包裹着的具有固定顺序的文本字符集。字符串字面量可以用于为常量和变量提供初始化值:let someString = "some string"初始化空字符串要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量,也可以初始化一个新的string实例: var emptyStr

2017-02-03 16:24:39 441

原创 swift 基本运算符

空合运算符空合运算符(a??b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b。表达式a必须是Optional类型。默认值b的类型必须要和a存储值的类型保持一致。空合运算符是对以下代码的简短表达方法:a != nil ? a! : b上述代码使用了三目运算符。当可选类型a的值不为空时,进行牵制解封(a!),访问a中的值;反之返回默认值b。无疑空合运算符(?

2017-01-15 13:37:23 503

原创 swift基础

可选类型使用可选类型来处理值可能缺失的情况。可选类型表示:有值,等于x或者没有值来看一个例子,swift的int类型有一种构造器,作用是将一个string值转换成int值。然而,并不知所有的字符串都可以转换成一个整数。字符串“123”可以转换成数字123,但是字符串“hello,world”不行。下面的例子使用这种构造器来尝试将一个string转换成int:let po

2017-01-14 15:43:40 306

原创 swift 基本类型

Swift是一门开发iOS,macOS,watchOS和TVOS应用的语言,然而,如果你有c或者oc开发经验的话,你会发现swift的很多内容都是你熟悉的。swift包含了c和oc上所有基础数据类型,int表示整数型值;double和float表示浮点型值;BOOL是布尔型值;string是文本型数据。swift还提供了三个基本的集合类型,Array,set和Dictionary。就像c语

2017-01-08 12:03:43 622

原创 ios 约束(七)

用宏来创建约束规则    用约束规则来排布控件的位置是相当可靠的。不过,就其本身来说,他们非常繁琐而且特别冗长。开发者要一次又一次的编写很难懂的方法调用语句。    约束规则调用起来也特别麻烦。一个简单的拼写错误就会耗费很多时间,而且许多应用程序所使用的约束规则都是一样的。如果可以预先定义一些宏,那么就能把排布视图所用的代码写的更易懂且更加可靠。假如要把某视图与另外一个视图

2016-12-30 17:09:26 344

原创 ios 约束(六)

1、实现约束规则之间的对比    所有的约束规则都遵循同一套固定的结构,而且都有相关的优先级:    view1.attribute(relation)view2.attribute*multiplier + constant    上述等式的每个部分都与NSLayoutConstraint对象的属性相对应,他们分别是priority、firstItem。firs

2016-12-30 10:05:13 691

原创 ios 约束(五)

1、用格式字符串将试图对齐并灵活调整其尺寸    通过约束规则,我们很容易就能指定视图的对齐方式:    1、“H:|[self]”、“H:[self]|”、“V:[self]|”、“V:|[self]”这4种格式字符串分别产生左对齐、右对齐、顶部对齐及底端对齐的效果。    2、向上述字符串中添加表示尺寸关系的谓词,即可实现拉伸至左边界、拉伸至右边界等效果:“H:

2016-12-25 09:50:12 559

原创 ios 约束(四)

1 格式字符串    1、方向    字符串开头的哪个可选项目表示约束规则所针对的方向,H:表示水平方向,V:表示垂直方向。意思是说,这条规则所约束的是左右方向的布局还是上下方向的布局。假如省略该项目,那么默认就表示左右方向。比方说有这样一个约束字符串:“H:[view1][view2]”,它的含义就是把view2直接放在view1右侧。H表示这条约束规则所针对的方向。

2016-12-24 22:54:38 544

原创 ios 约束(三)

创建约束规则    通过NSLayoutConstraint类,开发者可以用两种方式来创建约束规则。可以用一个相当长的方法调用语句来指明视图的某个属性与其他属性之间的关系,并描述这些属性之间的联系,也可以用一种写起来非常短小的格式化语言来指定视图在水平方向与垂直方向上的排布形式。    记住:无论怎么样构建约束规则,他们所产生的结果都是类似“y关系mx + b”这样的关系式。不

2016-12-24 20:55:46 459

原创 ios 约束(二)

1、约束系统的运作规律    可以认为约束系统所用的数学算是非常严格,实际上它们只是个参考。iOS会找到对符合约束的一种布局方案,有的时候,这种方案不止一套。下面给出约束系统的一些基本特征:    1、约束规则描述的是关系,而不一定是视图在某个方向上的属性。未必非要在知道右边界的情况下才能算出左边界。    2、每条约束规则都有其优先级。优先级的取值范围是从0到10

2016-12-19 23:52:03 726

原创 ios 约束(一)

1、什么是约束    约束就是一系列描述iOS程序视图布局的规则。他们限定了视图之间的关系,也限定了视图的布局形式。使用约束时。我们可以说“这些视图在水平方向上必须对齐”,或是“此视图必须根据另一个视图来调整自身高度,以便与之相符”。约束向开发者提供了一套布局语言,使得可以向视图里添加约束,并以此来描述各视图的空间关系。    iOS负责通过一套约束满足系统来实现这些布局需

2016-12-19 14:18:36 950

原创 ios 剪贴板

剪贴板为操作系统提供了一块集中存放数据的区域,使得应用程序之间可以共享数据。用户可以在某个程序里复制一份数据,然后切换到其他程序,将那份数据黏贴到那个程序里。大部分操作系统里面都有与剪切、复制、粘贴操作类似的功能。此外,用户也可以在同一个应用程序内部的文本框与视图之间复制并粘贴数据,而开发者则可以创建应用程序专用的剪贴板,它里面存放的数据,其他程序无法解读。    UIPasteboard

2016-12-19 10:25:30 3423

原创 ios 统一类型标识符

统一类型标识符是iOS系统在分享信息时所使用的中心组件,可以将他们看成是新一代的MIME类型。UTI是一种字符串,能够表示诸如图像及文本等资源类型。UTI指明了程序之间将要共用的数据对象是何类型。他们并不依赖于原有的各种指示符,比如文件扩展名、MIME类型或是OSType等与文件类型有关的元数据。UTI用一种更新颖、更灵活的技术取代了原有的那些技术。    UTI的命名遵循反向域名样式

2016-12-19 09:56:13 2154

原创 ios 定制UICollectionViewFlowLayout类实现网格布局

默认的流式布局会自动换行,以便使区段中的条目能够使用集合视图的长度或宽度,但这样做出来的视图只能在一个方向上滚动。如果愿意多做一些数学运算,就可以编写自定义的布局子类,从而实现不会换行的双向滚动视图。实现该功能所需要的运算律比较大,而且不是特别容易。完全定制了UICollectionViewFlowLayout的子类,覆写了collectionViewContentSize及layoutA

2016-12-12 23:51:41 2975

空空如也

空空如也

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

TA关注的人

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