自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iOS加密方式(RSA签名加密、AES加密等)

之前项目中采取的加密方式,只是对于重要的参数进行AES加密,再将各个参数拼接而成,通过MD5签名后形成最后一个参数。目前,改用了RSA签名的方式进行加密。AES加密主要针对于些重要的参数进行加密,如账号、密码等,具体代码实现可下Demo查看//AES加密- (NSData *)AES128EncryptedDataWithKey:(NSString *)key iv:(NSString *)iv

2017-07-26 19:25:01 2443

原创 iOS 字符中插入按钮(简单图文混排)

需求字符串中某段区域需要添加点击效果或者字符串中添加可点击的按钮。 解决:给UILabel添加点击事件的category。

2017-07-04 14:25:02 2644

原创 Swift与OC的区别

在Swift刚出来时就学习过,之后也一直没有用Swift写过项目,很快就忘记了,最近又花了点时间过了一遍官方的学习文档。Swift与OC的差异基础语法声明使用let和var关键字,Swift可以推出出类型,let声明的常量不可修改,var声明变量。Swift对数据要求严格,不存在隐式转换,强制转换格式:int(a)使用整数类型的 min 和 max 属性来获取对应类型的最小值和最大值BOOL

2017-06-13 16:06:32 1401

原创 iOS gif加载视图

gifLoadView 一句话就可以为视图添加加载 let loadView = LWTGifLoadView(frame:self.view.frame, callback:{ //网络请求 print("重新请求") }) self.view.addSubview(loadView)加载数据后再做处理

2017-04-07 14:38:51 450

原创 从零开始搭建iOS项目框架

APP项目搭建上周个人刚搭建完的项目框架,在这分享一下,主要还是采用MVC设计模式,没有使用storyboard,纯代码搭的界面。1.新建工程1.1 新建项目 * 删除无用的文件(Main.storyboard,ViewController) * 删除plist文件中Main storyboard file base name一项 * appdelegate进行修改- (BOOL)applic

2017-03-31 14:03:05 6783 2

原创 iOS缓存清理

1.清除本地数据库中的数据2. 清除Caches目录下文件 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,YES); NSString *cachesDir = [paths objectAtIndex:0]; NSFileManager* man

2017-03-27 09:50:52 456

原创 tableview 去除footer高度

tableView Section头部停留在顶部当UITableView的style为Plain的时候,就会出现这种情况,解决办法就是创建的时候选择组的形式 _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.view.frame.size.height - 64)

2017-03-22 10:04:13 2014

原创 swift 简单易用类似新闻客户端的结构

一句话实现let segementVC = LWTSegementViewController()//设置栏目的标题数组segementVC.titleArray = ["社会","科技","娱乐","体育","美女","动物"]//设置每个栏目的控制器数组for (_, _) in segementVC.titleArray.enumerated() { let vc = Tes

2017-03-15 16:33:25 941

转载 swift学习笔记(22)- 高级运算符

Swift 支持 C 语言中的全部位运算符。 主要记下特殊的高级运算符溢出运算符在默认情况下,当向一个整数赋予超过它容量的值时,Swift 默认会报错,而不是生成一个无效的数。这个行为为我们在运算过大或着过小的数的时候提供了额外的安全性。例如,Int16 型整数能容纳的有符号整数范围是 -32768 到 32767,当为一个 Int16 型变量赋的值超过这个范围时,系统就会报错:var poten

2017-03-13 15:28:06 278

转载 swift学习笔记(21)- 访问控制

模块和源文件Swift 中的访问控制模型基于模块和源文件这两个概念。模块指的是独立的代码单元,框架或应用程序会作为一个独立的模块来构建和发布。在 Swift 中,一个模块可以使用 import 关键字导入另外一个模块。在 Swift 中,Xcode 的每个目标(例如框架或应用程序)都被当作独立的模块处理。如果你是为了实现某个通用的功能,或者是为了封装一些常用方法而将代码打包成独立的框架,这个框架就是

2017-03-13 14:18:42 339

转载 swift学习笔记(20)- 泛型

泛型函数泛型函数可以适用于任何类型,下面的 swapTwoValues(::) 函数是上面三个函数的泛型版本:func swapTwoValues<T>(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA}swapTwoValues(::) 的函数主体和 swapTwoInts(::)

2017-03-10 16:43:46 433

转载 swift学习笔记(19)- 协议

协议语法协议的定义方式与类、结构体和枚举的定义非常相似:protocol SomeProtocol { // 这里是协议的定义部分}要让自定义类型遵循某个协议,在定义类型时,需要在类型名称后加上协议名称,中间以冒号(:)分隔。遵循多个协议时,各协议之间用逗号(,)分隔:struct SomeStructure: FirstProtocol, AnotherProtocol { //

2017-03-09 10:23:02 386

原创 MJRefresh实现动画下拉刷新

项目中需要使用下拉的动画效果,MJ上的是图片在左,文字在右(而且没有样式选择),我们需要的是图片在上文字在下,我们只需要继承MJRefreshGifHeader,即可修改样式。 -(void)prepare{ [super prepare]; // 设置普通状态的动画图片 NSMutableArray *idleImages = [NSMutableArray array];

2017-03-08 17:07:09 1724

转载 swift学习笔记(18)- 扩展

扩展作用添加计算型属性和计算型类型属性定义实例方法和类型方法提供新的构造器定义下标定义和使用新的嵌套类型使一个已有类型符合某个协议 在 Swift中,你甚至可以对协议进行扩展,提供协议要求的实现,或者添加额外的功能,从而可以让符合协议的类型拥有这些功能。你可以从协议扩展获取更多的细节。 注意 扩展可以为一个类型添加新的功能,但是不能重写已有的功能。扩展语法使用关键字 exte

2017-03-06 18:12:52 318

转载 swift学习笔记(17)- 类型转换

定义一个类层次作为例子你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。下面的三个代码段定义了一个类层次和一个包含了这些类实例的数组,作为类型转换的例子。class MediaItem { var name: String init(name: String) { self.name = name

2017-03-06 16:20:31 387

原创 iOS appIcon生成和设置

使用asset catalog creator工具一键生成app的icon,美工出一张1024*1024的图片即可,不用再Xcode中一张张选择各类型的icon,方便很多 使用方法 直接将1024尺寸的图片拖到这上面即可,选择好你工程中images.xcassets文件夹的位置,选择iOS icon,最后点击Update Assets Catalog即可完成。 生成之后你可以在工程中image

2017-03-04 20:04:43 705

转载 swift学习笔记(16)- 错误处理

表示并抛出错误在 Swift 中,错误用符合Error协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。Swift 的枚举类型尤为适合构建一组相关的错误状态,枚举的关联值还可以提供错误状态的额外信息。例如,你可以这样表示在一个游戏中操作自动贩卖机时可能会出现的错误状态:enum VendingMachineError: Error { case invalidSelection

2017-03-04 17:01:43 430

转载 swift学习笔记(15)- 可选链

使用可选链式调用代替强制展开通过在想调用的属性、方法、或下标的可选值后面放一个问号(?),可以定义一个可选链。这一点很像在可选值后面放一个叹号(!)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。为了反映可选链式调用可以在空值(nil)上调用的事实,不论这个调用的属性、方法及下标返回的值是不是可选值,它的返回结果都是一个可选值。你可以利用这

2017-03-03 20:30:00 356

原创 iOS日期选择器

LWTDatePickerView简洁的日期选择器 oc版本创建 LWTDatePickerView *pickerView = [[LWTDatePickerView alloc] initWithPickerViewWithCenterTitle:@"选择期限" LimitMaxIndex:50];滚动到特定日期 [pickerView pickerViewDidSelectRow

2017-03-02 16:24:39 518

转载 swift学习笔记(14)- 解决循环强引用

自动引用计数的工作机制当你每次创建一个类的新的实例的时候,ARC 会分配一块内存来储存该实例信息。内存中会包含实例的类型信息,以及这个实例所有相关的存储型属性的值。此外,当实例不再被使用时,ARC 释放实例所占用的内存,并让释放的内存能挪作他用。这确保了不再被使用的实例,不会一直占用内存空间。然而,当 ARC 收回和释放了正在被使用中的实例,该实例的属性和方法将不能再被访问和调用。实际上,如果你试图

2017-02-23 13:49:16 434

转载 swift学习笔记(13)- 构造过程、析构过程

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

2017-02-22 19:30:25 483

转载 swift学习笔记(12)- 继承

定义一个基类不继承于其它类的类,称之为基类。 注意 Swift 中的类并不是从一个通用的基类继承而来。如果你不为你定义的类指定一个超类的话,这个类就自动成为基类。class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \(currentSpe

2017-02-22 11:46:52 258

转载 swift学习笔记(11)- 下标

下标下标可以定义在类、结构体和枚举中,是访问集合,列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。举例来说,用下标访问一个Array实例中的元素可以写作someArray[index],访问Dictionary实例中的元素可以写作someDictionary[key]。一个类型可以定义多个下标,通过不同索引类型进行重载。下标不限于一维,你可以定义具有多个入

2017-02-22 10:21:12 401

原创 TextView添加链接实现富文本label带点击功能

TextView添加链接有时候我们需要实现一行文中中某些文字带有点击的功能,大多数情况下会采用label和button结合实现或者第三方富文本label,其实用textView添加链接实现起来非常方便。 需要设置得文字NSString *text =@"我同意《XX在线服务协议》及《XX在线用户信息及隐私保护规则》";NSMutableAttributedString *MAttributedS

2017-02-21 15:12:26 1589

转载 swift学习笔记(10)-属性

存储属性简单来说,一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。存储属性可以是变量存储属性(用关键字 var 定义),也可以是常量存储属性(用关键字 let 定义)。可以在定义存储属性的时候指定默认值,请参考默认构造器一节。也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值,请参考构造过程中常量属性的修改一节。下面的例子定义了一个名为 FixedLengthRange

2017-02-20 18:21:48 291

转载 swift学习笔记(9)-结构体和类

结构体和类对比Swift 中类和结构体有很多共同点。共同处在于: * 定义属性用于存储值 * 定义方法用于提供功能 * 定义下标操作使得可以通过下标语法来访问实例所包含的值 * 定义构造器用于生成初始化值 * 通过扩展以增加默认实现的功能 * 实现协议以提供某种标准功能与结构体相比,类还有如下的附加功能: * 继承允许一个类继承另一个类的特征 * 类型转换允许在运行时检查和解释一个类

2017-02-20 16:36:06 660

转载 swift学习笔记(8)-枚举

枚举语法使用enum关键词来创建枚举并且把它们的整个定义放在一对大括号内:enum SomeEnumeration { // 枚举定义放在这里 } 下面是用枚举表示指南针四个方向的例子:enum CompassPoint { case north case south case east case west } 枚举中定义的值(如 north

2017-02-20 15:01:32 384

转载 swift学习笔记(7)-闭包

闭包表达式闭包表达式是一种利用简洁语法构建内联闭包的方式。sorted 方法Swift 标准库提供了名为 sorted(by:) 的方法,它会根据你所提供的用于排序的闭包函数将已知类型数组中的值进行排序。一旦排序完成,sorted(by:) 方法会返回一个与原数组大小相同,包含同类型元素且元素已正确排序的新数组。原数组不会被 sorted(by:) 方法修改。let names = ["Chris"

2017-02-20 14:59:07 390

转载 swift学习笔记(6)-函数

函数函数的定义与调用当你定义一个函数时,你可以定义一个或多个有名字和类型的值,作为函数的输入,称为参数,也可以定义某种类型的值作为函数执行结束时的输出,称为返回类型。每个函数有个函数名,用来描述函数执行的任务。要使用一个函数时,用函数名来“调用”这个函数,并传给它匹配的输入值(称作 实参 )。函数的实参必须与函数参数表里参数的顺序一致。func greet(person: String) -> St

2017-02-16 18:29:10 279

转载 swift学习笔记(5)-控制流

For-In 循环for index in 1...5 { print("\(index) times 5 is \(index * 5)")}// 1 times 5 is 5// 2 times 5 is 10// 3 times 5 is 15// 4 times 5 is 20// 5 times 5 is 25如果你不需要区间序列内每一项的值,你可以使用下划线(_)替代

2017-02-13 15:44:34 343

转载 swift学习笔记(4)-集合类型

Swift 语言提供Arrays、Sets和Dictionaries三种基本的集合类型用来存储集合数据。数组(Arrays)是有序数据的集。集合(Sets)是无序无重复数据的集。字典(Dictionaries)是无序的键值对的集。数组创建一个空数组我们可以使用构造语法来创建一个由特定数据类型构成的空数组:var someInts = [Int]()print("someInts is of typ

2017-02-13 14:23:40 754

转载 swift学习笔记(3)-字符串

字符串初始化、操作

2017-02-10 13:40:12 318

转载 swift学习笔记(2)-基本运算符

switf学习日记 基本运算符

2017-02-10 10:04:06 433

转载 swift学习笔记(1)-基础语法

swift变量、常量声明

2017-02-09 17:24:02 284

转载 Git命令大全

Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下:关于git,首先需要了解几个名词,如下:Workspace //工作区Index / Stage //暂存区Repository //仓库区(或本地仓库)Remote //远程仓12341234

2017-02-08 11:46:33 199

原创 iOS 去掉tableview的cell线

整体去掉cell的线 tableView.separatorStyle = UITableViewCellSelectionStyleNone;去掉tableview多余的cell线tableview行数比较少的情况,会导致空的地方也还是会有cell线 tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero

2017-02-07 10:55:21 1275

原创 Airbnb的开源项目Lottie简易实现动画

Airbnb的开源项目Lottie简易实现动画Lottie是Airbnb最近推出的开源项目,设计师只要使用AE把动画做出来,再使用Bodymovin插件就能把动画文件导出成json文件。

2017-02-04 16:43:28 1849

原创 iOS10 调用相册崩溃等问题解决

iOS10出了以后,第一时间升级了Xcode,发现了一些问题。1.选择头像,调用相册的时候崩溃了。打出来以后日志:This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must c

2016-09-19 13:38:02 3167

原创 app实现上传图片

通过点击ImageView,调用系统相册或者相机选择照片。调用UIImagePickerController,需要有UIImagePickerControllerDelegate,UINavigationControllerDelegate两个协议,sourceType中UIImagePickerControllerSourceTypePhotoLibrary是相册,UIImagePickerCo

2016-09-12 16:56:32 5538

原创 给App添加缓存功能、清除缓存功能

(1)写成文件,用text或plist文件进行数据储存1.写一个工具类,用以获取文件的路径/** * 获取Documents文件夹路径 * * @return 文件夹路径 */+ (NSString *)getDocumentsFolderPath{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocum

2016-08-07 16:26:09 1113

空空如也

空空如也

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

TA关注的人

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