自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GarveyCalvin

一个友好的程序员的博客

  • 博客(44)
  • 收藏
  • 关注

原创 iOS开发 - Swift Codable协议实战:快速、简单、高效地完成JSON和Model转换!

`Codable` 是 `Swift 4.0` 引入的一种协议,它是一个组合协议,由 `Decodable` 和 `Encodable` 两个协议组成。它的作用是将模型对象转换为 JSON 或者是其它的数据格式,也可以反过来将 JSON 数据转换为模型对象。

2023-04-25 20:28:51 1672

原创 设计模式-用代理模式(Proxy Pattern)来拯救你的代码:打造可靠的程序设计

设计模式是一种高级编程技巧,也是一种通用的解决方案。它能在不同的应用场景中使用,它可以提高代码的可读性、可复用性和可维护性。设计模式的学习能提高我们的编程能力以及代码质量,同时也能提高我们的开发效率,减少代码的维护成本。

2023-03-25 21:15:44 108

原创 给我两分钟的时间:微博风格九宫格:UICollectionView实现

首先讲下今天的目标,我们将要使用 UICollectionView 来创建仿微博的九宫格内容。

2023-02-15 22:25:21 191

原创 SwiftUI - Grid View 的实现方法,逐步剖析助你实现

简介在当前正式 SwiftUI 版本而言,很多控件都是缺少的。比如在 UIKit 框架里有 UICollectionView 组件,可以很方便地做 Gird 格子类型的视图。但是在 SwiftUI 这个框架里面,就没有对应 UICollectionView 的组件。我们当然可以用 UIViewRepresentable 来封装一个 UICollectionView ,但是本篇文章要探讨的是,如何使用 SwiftUI 来实现 Grid 格子视图,现在一起来实现吧。实现思考在思考前,我们先来定义生成随.

2020-08-30 19:39:18 945

原创 SwiftUI - iOS10本地推送通知教程UserNotifications在Swift中的实现方式

简介消息推送相信在很多人的眼里都不陌生了吧?像即时聊天微信,好友发信息给你时会在顶部弹下小窗口提醒你。也像是在影院APP预订了电影票,在开场前一小时你也会收到提醒。这类推送是需要经过后端发送请求的,需要服务器发送推送请求,又或者使用如极光推送等第三方渠道。那么如果我们的APP不需要连网呢?这是不是就不能使用消息推送了?不是的,苹果还提供给我们本地消息通知服务,即便APP不连网也能使用,功能也很强大可靠。本地时钟的应用场景很广泛,例如手机上的时钟、日历等。那么你知道如何去实现它吗?这篇文章将告知你答案,

2020-06-09 21:03:21 1295 1

原创 SwiftUI - 一起来仿写微信APP之一首页列表视图

简介最近在学习 SwiftUI ,我一般都是先去学习界面布局,所以就想着仿写一下经常使用的软件的界面,所以先拿微信开刀。因为不想一次性发太多的内容,所以只好将主题分解,一部分一部分地去讲,接下来我们一起来学习吧。如果你尝试过使用 SwiftUI 编写界面,你会发现是如此地舒心,我已深深地爱上了它。当然它的坑并不少,毕竟才刚出来,最低支持系统是 iOS13,估计还得等个几年才会慢慢在公司里使用上吧。但是这并不妨碍我们的学习。在这篇文章里,我会一步一步编写微信的首页列表视图,一步一步将代码呈现上来,并仔细

2020-05-12 12:57:48 515 2

原创 SwiftUI - 一步一步教你使用UIViewRepresentable封装网络加载视图(UIActivityIndicatorView)

目录概述介绍 UIViewRepresentable封装网络加载视图(UIActivityIndicatorView)使用封装好的加载视图 GCIndicatorView效果预览Demo 源码下载关于作者公众号QQ群概述网络加载视图,在一个联网的APP上可以讲得上是必须要的组件,在SwiftUI中它并没有提供如 UIKit 中的UIActivityIndicatorView直接提供给我们调用,...

2020-04-18 18:00:10 1432

原创 Swift2.0-异常处理(Exception handler)

异常处理,英文名为exceptional handling, 是代替日渐衰落的error code方法的新法,提供error code 所未能具体的优势。异常处理分离了接收和处理错误代码。这个功能理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解。 异常处理(又称为错误处理)功能提供了处理程序运行时出现的任何意外或异常情况的方法。

2015-12-28 09:55:12 473

原创 iOS开发-应用之间的跳转及通信

我们接下来将要实现应用程序之间的跳转及通讯。现在手机开发中,很多时候我们都需要在应用内跳转到别的应用中,这个是很常见的。为此,我们首先需要准备两个项目`ApplicationOne`和`ApplicationTwo`。

2015-10-14 12:18:44 500

原创 企业版证书打包APP发布,安装后闪退问题解决。

企业版证书打包APP发布,安装后闪退问题解决。我现在就碰到这个问题,只要项目与Swift沾上边的,都会出问题。

2015-08-04 17:09:59 2187

原创 [置顶]将博客搬至CSDN

将博客搬至CSDN待把博客搬至CSDN:http://blog.csdn.net/hatsuna简介一开始我是不喜欢写博客的,因为我比较懒,总觉得写博客会浪费我的时间。但是当我接触博客之后,我才发现,这并不是在浪费时间,写博客其实就是在巩固和拓展你的现有知识,并且把它展现给所有人看。除了让别人理解之外,还能让大家指出我的错误,这是对大家的提升,对大家都有所帮助。博客我有一段时间写得比较频繁

2015-07-27 10:52:09 1233

原创 [置顶]Swift 与 Object-C 交互 (Swift版本为:1.2)

这篇文章主要是介绍 Swift 与 Object-C 之间进行交互的代码,主要分为两个部分。一个是 Swift 项目调用 Object-C 的类,另一个是 Object-C 项目调用 Swift 类。过程是很简单,但是对于没接触过的人来说,还是存在一点难度的。 你可以在 GitHub 上下载此文章相关的源代码:Swift-Objective-C-Mutual(https://github.

2015-07-27 10:52:06 515

原创 [置顶]MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作

MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”。 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的理解透彻,因为我本来就比较喜欢写代码。同时写出来这些文章,是想要给大家当个参考,希望也能对大家有所帮助,有所提升,这就是我为什么要写终端操作MySQL的文章了。 注意:MySQL数据库命令不区

2015-07-27 10:52:04 491

原创 [置顶]MySQL之终端(Terminal)管理MySQL

前言:MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”。 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的理解透彻,因为我本来就比较喜欢写代码。同时写出来这些文章,是想要给大家当个参考,希望也能对大家有所帮助,有所提升,这就是我为什么要写终端操作MySQL的文章了。 以下命令基于笔者在Mac

2015-07-27 10:52:01 470

原创 [置顶]iOS开发-多线程开发之线程安全篇

前言:一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象、同一个变量、同一个文件和同一个方法等。因此当多个线程访问同一块资源时,很容易会发生数据错误及数据不安全等问题。因此要避免这些问题,我们需要使用“线程锁”来实现。 本文主要论述IOS创建锁的方法总结,如果大家对多线程编程技术这一块不熟悉,我建议你们先去看我的另一篇文章”iOS开发-多线程编程技

2015-07-27 10:51:59 719

原创 [置顶]Git-学习笔记(常用命令集合)

这里引用一下百度百科里Git的内容:Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus Torvalds 是这样给我们介绍 Git 的。Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样

2015-07-27 10:51:57 633 1

原创 [置顶]iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

简介在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了。有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行。比如:前端和后台作交互、大任务(需要耗费一定的时间和资源)等等。也就是说,我们可以使用线程把占据时间长的任务放到后台中处理,而不影响到用户的使用。  线程间通讯有一个非常重要的队列,就是主队列。在这个队列中处理多点触控及所有与UI相

2015-07-27 10:51:54 654

原创 iOS开发-代码片段(Code Snippets)提高开发效率

简介在 XCode4 引入了一个新特性,那就是“代码片段(Code Snippets)”。对于一些经常用到的代码,抽象成模板放到 Code Snippets 中,使用的时候就只需要键入快捷键就可以了。 查看代码片段,请看下图:也可以使用 Control + Option + Command + 2 调出“代码片段”工具。 苹果也自带一些“代码片段(Code Snippe

2015-07-27 10:51:45 405

原创 ios开发-Object-C可变参数函数

简介一个可变参数函数是指一个函数拥有不定的参数,即为一个函数可接收多个参数。有时我们会遇到一些算术问题需要用到,比如是计算传入参数的总和,字符串的连接或是其它操作过程,我们在 OC 里也经常使用,最经典的就是 NSLog( C 为 printf ) ,它可以指定格式的输出,格式化输出的内容。 现在我们先来看看普通函数的定义方法。  普通函数一般我们定义的函数都是指定有多

2015-07-27 10:51:41 407

原创 MAC-Zsh安装与使用——终极Shell

前言:Zsh可配置性强,用户可以自定义配置,个性化强。Zsh tab补全更强大,该功能可以让我们节约很多时间。Zsh 还有代码高亮功能,使得代码更好看了,显得逼格更高。Zsh 还有很多强大的功能,这里就不一一细说了。 然后我来为大家说个笑话:Zsh全称为Z Shell,因为Z是最后一个字母,因此大家称之为——终极Shell。这是我在知乎上看到的某一位评论,他说得很有道理,我

2015-07-27 10:51:34 596

原创 iOS开发-正则表达式的使用方法

前言:在表单验证中,我们经常会使用到正则,因为我们需要用它来判断用户输入的字符是否为合法的,如果是不合法的,那么应该提示用户输入错误,并不让提交至服务器。我们也可以通过正则表达式,从用户输入的字符串中过滤并获取我们想要的特定部分。总而言之,正则表达式是非常强大的。  方法一、谓词(NSPredicate)创建正则表达式使用它来判断用户输入的字符串是否为合法的:// 编写正则

2015-07-27 10:51:25 382

原创 iOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。 当一个类要使用某一个Protocol(协议)时,都必须要遵守协议。比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来提醒你没有遵守××协议。注意,我这里说的

2015-07-27 10:51:19 537

原创 iOS开发-Object-C Block的实现方式

前言:我们可以把Block当作一个闭包函数,它可以访问外部变量和局部变量,但默认是不可以修改外部变量。你可以使用它来做回调方法,比起使用代理(Delegate)会更加直观。顺带一提,苹果很多的接口(API)都使用了Block。  一、Block的基本定义Block的基本写法(也是详细写法):returnType (^blockName)(params) = ^returnT

2015-07-27 10:51:14 407

原创 iOS开发-UIView之动画效果的实现方法(合集)

前言:在开发APP中,我们会经常使用到动画效果。使用动画可以让我们的APP更酷更炫,最重要的是优化用户体验,但取决于动画的质量。像QQ、微信、新浪微博等APP,动画效果就很好了,至少我很喜欢它们的动画,让我使用起来感觉很顺畅,心情很开朗。本文会介绍UIView效果的实现方法,非核心动画。 一、使用UIView类实现动画基本写法,代码必须放在Begin和Commit之间: [UI

2015-07-27 10:51:10 400

原创 iOS开发-项目的完整重命名方法,图文教程。

前言:在IOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦。直接改项目名吧,XCODE又不会帮你改所有的名字。总是有很多文件、文件夹或者是项目设置的项。而且都是不能随便改的,有时候改着改着,编译不了。所以各位重命名项目时,记得先备份好一份噢。本文我会介绍一种方法,是我自己参考了很多资料得出的总结。 为什么说是完整呢?因为改名之后,你不会再看到任何有关于之前的项目名字。 本文会

2015-07-27 10:51:05 391

原创 iOS捕获异常,常用的异常处理方法

前言:在开发APP时,我们通常都会需要捕获异常,防止应用程序突然的崩溃,防止给予用户不友好的一面。其实OBJECT-C的异常处理方法和JAVA的雷同,懂JAVA的朋友一看就懂。我为什么要写这篇博文呢?因为我发现百度上的介绍方法,很多都不是我想要的,而我想要的又说得不清楚,重点是大家都是直接复制别人的代码。。。于是不多说,大家往下看~~~ 以下程序已测试并通过:设备:IOS8模拟器中

2015-07-27 10:51:01 279

原创 iOS开发-发送邮件(E-mail)方法整理合集(共3种)

前言:在IOS开发中,有时候我们会需要用到邮件发送的功能。比如,接收用户反馈和程序崩溃通知等等。其实这个功能是很常用的,因为我目前就有发送邮件的开发需求,所以顺便整理下IOS发送邮件的方法。 IOS原生自带有两种方法发送邮件的方法,另一种是使用第三方库:1)openURL(原生)    ——用户体验较差,程序会进入后台,跳转至邮件发送界面。2)MFMailComposeView

2015-07-27 10:50:56 1798

原创 iOS开发-XCode常用快捷键整理

前言:如果我们能够掌握并巧妙地使用快捷键,可以大大加快我们的工作效率,这个对经常使用快捷键的人们来说,应该很容易理解。因此我们需要做的是,针对于自己经常使用的快捷键去进行记忆。我不会推荐你们去把所有的快捷键都记住,毕竟XCode那么多的快捷键,谁会记得到那么多啊?就算把所有记住,你将要花费多少时间? 下面我将会列举我经常会使用到的快捷键,希望能对大家有所帮助,谢谢。 代码缩进:

2015-07-27 10:50:51 383

原创 iOS开发-使用Storyboard进行界面跳转及传值

前言:苹果官方是推荐我们将所有的UI都使用Storyboard去搭建,Storyboard也是一个很成熟的工具了。使用Storyboard去搭建所有界面,我们可以很迅捷地搭建出复杂的界面,也就是说能为我们节省大量的时间。我们还可以很直观地看出各个界面之间的关系,修改起来也很方便。将来如果遇到需要作修改的地方,我们只需要找到相对应的Storyboard就可以了,比起以前来说,快捷了不少。 我

2015-07-27 10:50:47 552

原创 iOS开发-关闭/收起键盘方法总结

前言:作为IOS开发人员,需要经常和表单打交道。因此我对收起键盘的方法作了下总结,IOS收起键盘有三种方法(如果有其它收起键盘的方法请在留言区指错)。 收起键盘的方法:1、点击Return按扭时收起键盘- (BOOL)textFieldShouldReturn:(UITextField *)textField{ return [textField resignFi

2015-07-27 10:50:42 395

原创 iOS开发-Object-C获取手机设备信息(UIDevice)

一、获取UiDevice设备信息// 获取设备名称NSString *name = [[UIDevice currentDevice] name];// 获取设备系统名称NSString *systemName = [[UIDevice currentDevice] systemName];// 获取系统版本NSString *systemVersion = [[UID

2015-07-27 10:50:40 1056

原创 iOS开发-自动布局之autoresizingMask使用详解(Storyboard&Code)

前言:现在已经不像以前那样只有一个尺寸,现在最少的IPHONE开发需要最少需要适配三个尺寸。因此以前我们可以使用硬坐标去设定各个控件的位置,但是现在的话已经不可以了,我们需要去做适配,也许你说可以使用两套UI或两套以上的UI,但那样不高效也不符合设计。IOS有两大自动布局利器:autoresizing 和 autolayout(autolayout是IOS6以后新增)。autoresizing是U

2015-07-27 10:50:35 364

原创 iOS开发-Object-C学习之结构体使用

前言:定义结构体并不是定义一个变量,而是定义了种数据类型。 结构体作用:  结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。  在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。  结

2015-07-27 10:50:31 597

原创 iOS开发-使用宏自定义输出(NSLog)

前言:1)输出日志是会大量损耗系统性能2)输出的信息很容易会被截取到,导致信息不安全。 所以我们会在发行版(Release)取消所有的Log。如果一行一行地去注释掉Log,显然不是一个明确的选择。因此我们可以使用宏去自定义Log输出。 最简单的一个例子#ifdef DEBUG#define GCLog(fmt, ...) NSLog((fmt), ##__V

2015-07-27 10:50:26 418

原创 iOS开发-简单获取View截图图像(Quartz2D)

1. 先指定图像的大小UIGraphicsBeginImageContext(view.frame.size);2. 在指定的区域绘制图像[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];3. 获取图像上下文UIImage *image = UIGraphicsGetImageF

2015-07-27 10:50:22 486

原创 iOS开发-重写description方法,自定义控制台(log)信息

description是所有类都有的一个方法。我们重写这个方法,可以自定义实例输出的信息。 比如我们创建一个Person类:在.h文件中添加两个属性:#import @interface Person : NSObject@property (strong, nonatomic) NSString *name;@property (assign, non

2015-07-27 10:50:18 436

原创 iOS开发-drawRect方法小技巧(超短)

获取画布:CGContextRef context = UIGraphicsGetCurrentContext(); 设置颜色的三种方法:[[UIColor blueColor] setStroke];CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);CGContextS

2015-07-27 10:50:15 881

原创 iOS开发-在Swift里使用AFNetworking方法

在OC里使用惯了AFNetworking,比较喜欢这一个第三方库,在别的途径里得知可以在Swift里使用AFNetworking。但是那个时候我不知道具体的操作是怎样的,于是我只能去百度、GOOGLE了,还好让我给找到了答案,因而在这里和大家分享一下。1.首先把下载好的AFN库直接拖到工程中 2.这里把Copy item if needed这个选项勾上,然后点完成 3.

2015-07-27 10:50:11 1283

原创 Swift学习-枚举(Enumerations)的使用方法

Swift学习-枚举的使用方法枚举的使用语法:enum someEnumer { // 枚举的成员值} 以下是方向的一个例子:enum direction { case Up case Down case Left case Right}以下摘自Swift 中文翻译组注意:不像 C 和

2015-07-27 10:50:06 502

原创 iOS开发-Swift获取手机设备信息(UIDevice)

使用UiDevice获取设备信息获取设备名称let name = UIDevice.currentDevice().name获取设备系统名称let systemName = UIDevice.currentDevice().systemName获取系统版本let systemVersion = UIDevice.currentDevice().syste

2015-07-27 10:50:02 970

空空如也

空空如也

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

TA关注的人

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