- 博客(57)
- 资源 (4)
- 问答 (2)
- 收藏
- 关注
原创 自定义UIAlertController
自定义UIAlertController,仿系统UIAlertController,继承自UIViewController
2017-10-17 15:49:29
1356
原创 WKWebView隐藏导航栏后顶部出现空白
WKWebView加载web页面,隐藏导航栏,全屏显示,发现顶部出现20px的空白。记录一下解决方法,并对iOS 11也做相应调整。
2017-09-28 11:45:51
7848
原创 cocos2d-objc的配置使用
在上一篇中,我说到在mac上配置cocos2d-x的配置,打开发现全是c++的开发语言环境,这对于一个习惯用xcode开发的我来说,显然是相当不方便的。怎么整?于是,在github上找到了cocos2d-objc,看名字就知道这是跟OC语言有关系,也的确是这样,它提供了OC的接口调用。下载路径为https://github.com/cocos2d/cocos2d-objc好的,问题来了,当
2016-08-24 12:00:17
2240
1
原创 Mac下搭建Cocos2d-x开发环境
今天搭建cocos2d-x开发环境,走了很多误区,写这篇博文,以便以后查阅。我是从github上面下载的cocos2d-x,下载完,安装,发现怎么都是失败,查阅网上很多说法,终于找到原因,是cocos2d-x文件下tools/cocos2d-console路径下面并没有bin文件,缺失很多。我以为是没有下载过程中丢包,又重新下载安装了一次,依然如此。于是果断抛弃从guthub上下载,进coco
2016-08-22 15:09:04
503
原创 UIPopoverPresentationController的使用
UIPopoverPresentationController是个什么?我理解中的UIPopoverPresentationController是个弹出的控件,与UIAlertController类似,但又不同。UIPopoverPresentationController是iOS8以后新增的,是UIViewController的属性。使用的的时候,需要创建的是UIViewController
2016-08-10 18:34:24
6288
原创 Mac终端自动补全及常用命令
记录一下终端的一些使用命令,跟自动补全的配置,主要怕以后忘记了。1.终端自动补全的配置打开终端,输入 : nano .inputrc在文件里面写上:set completion-ignore-case onset show-all-if-ambiguous onTAB: menu-completectrl + o ,回车,重启终端,自动补全按tap键就ok。
2016-08-03 17:10:12
34264
5
原创 NSMutableParagraphStyle与NSParagraphStyle的使用
开发过程中,经常会遇到动态计算行高的问题, - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionaryNSString *,id> *)attributes context:(nullableNSString
2016-03-15 14:54:45
18456
原创 php学习之基本语法
1、脚本php脚本以 结尾,如下:<?php// 此处是 PHP 代码?>PHP默认的文件扩展名为".php"。PHP语句以 ; 结尾。2、php注释<?php// 这是单行注释# 这也是单行注释/*这是多行注释块它横跨了多行*/?>3、php大小写敏感在php中,对所有用户自定义的函数、类、关键字(if、else等)都对大小写不敏感,即并不区分
2016-01-25 17:46:52
382
转载 git之创建标签
在Git中打标签非常简单,首先,切换到需要打标签的分支上:$ git branch* dev master$ git checkout masterSwitched to branch 'master'然后,敲命令git tag 就可以打一个新标签:$ git tag v1.0可以用命令git tag查看所有标签:$ git tagv1.0默认标签是打在最新提交
2016-01-06 16:27:39
396
转载 git之多人协作
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。要查看远程库的信息,用git remote:$ git remoteorigin或者,用git remote -v显示更详细的信息:$ git remote -vorigin git@github.com:michaelliao/learn
2016-01-06 16:20:01
403
转载 git之Feature分支
软件开发中,总有无穷无尽的新的功能要不断添加进来。添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。现在,你终于接到了一个新任务:开发代号为Vulcan的新功能,该功能计划用于下一代星际飞船。于是准备开发:$ git checkout -b feat
2016-01-06 16:17:43
511
转载 git之Bug分支
软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:$ git status# On branch dev#
2016-01-06 16:12:58
396
转载 git之分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。下面我们实战一下--no-ff方式的git merge:首先,仍然创建并切换dev分支:$ git checkout -b devSwitc
2016-01-06 16:09:52
312
转载 git之解决冲突
人生不如意之事十之八九,合并分支往往也不是一帆风顺的。准备新的feature1分支,继续我们的新分支开发:$ git checkout -b feature1Switched to a new branch 'feature1'修改readme.txt最后一行,改为:Creating a new branch is quickAND simple.在feature1分支上
2016-01-06 15:59:15
254
转载 git之创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能
2016-01-06 15:45:41
408
转载 git之从远程库克隆
上次我们讲了先有本地库,后有远程库的时候,如何关联远程库。现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。首先,登陆GitHub,创建一个新的仓库,名字叫gitskills:我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到READM
2016-01-06 15:32:36
527
转载 git之添加远程库
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:在Repository name填入learngit,其他保持默认设置,点
2016-01-06 15:27:59
338
转载 git之删除文件
在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交:$ git add test.txt$ git commit -m "add test.txt"[master 94cdc44] add test.txt 1 file changed, 1 insertion(+) create mode 100644 test.txt一般情况下,你
2016-01-06 15:21:08
357
转载 git之撤销修改
自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行:$ cat readme.txtGit is a distributed version control system.Git is free software distributed under the GPL.Git has a mutable index called stage.
2016-01-06 15:15:14
356
转载 git之管理修改
现在,假定你已经完全掌握了暂存区的概念。下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。为什么说Git管理的是修改,而不是文件呢?我们还是做实验。第一步,对
2016-01-06 15:13:42
300
转载 git之工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。先来看名词解释。工作区(Working Directory)就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:版本库(Repository)工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫in
2016-01-06 15:05:52
249
转载 git之版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:Git is a distributed version control system.Git is free software distributed under the GPL.然后尝试提交:$ git add readme.txt$ git commit -m "appe
2016-01-06 14:55:17
238
转载 git之查看仓库状态
我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容:Git is a distributed version control system.Git is free software.现在,运行git status命令看看结果:$ git status# On branch master# Chang
2016-01-06 14:51:24
953
转载 git之创建版本库
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:$ mkdir learngit$ cd learngit$ pwd/Users/m
2016-01-06 14:43:12
374
转载 Swift之正则表达式
正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。正则表达式的用处:判断给定的字符串是否符合某一种规则(专门用于操作字符串)- 电话号码,电子邮箱,URL...- 可以直接百度别人写好的正则- 别人真的写好了,而且测试过了,我们可以直接用
2015-12-18 13:45:26
1310
转载 Swift之!与?的区别
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:var stringValue : String //error: variable 'stringValue' used before being initialized//let hashVa
2015-12-15 18:45:24
324
原创 Swift之协议( protocol)
swift中定义协议同oc中类似,也是在类前定义就行@objcprotocol VisitorViewDelegate:NSObjectProtocol{ //点击注册按钮 optional func visitorViewDidRegisterBtnClick(visitView: VisitorView) //点击登录按钮 optional func visitorVi
2015-12-14 18:01:55
523
原创 Swift之互斥锁的使用
oc中的互斥锁:@synchronized(self) { //需要执行的代码块}swift中的互斥锁objc_sync_enter(self)//需要执行的代码块objc_sync_exit(self)至于其他多线程的API和以前的一样,只是少了perform这一类的API,苹果已经去掉了
2015-12-14 17:52:13
4676
原创 Swift之基本数据类型间的转换
Int转换Float或Double:let intVar : Int = 3let doubleVar : Double = Double(intVar)Int转换为String:let intVar : Int = 3let strVar : String = String(intVar)String转换为Int:let strVar : Stri
2015-12-10 14:52:50
590
原创 iOS 使用CIFilter生成二维码
iOS7之前,二维码的制作多使用第三方库,比如ZBarSDK等,iOS7之后,可以使用原生的CIFilter生成二维码。首先需要创建一个imageview来显示二维码: _qrCodeSizeImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,150, 150)]; _qrCodeSizeImageV
2015-12-03 16:19:18
631
原创 Swift之switch使用
Swift的switch语句比C语言的要强大很多。 Swift中switch语句的case语句不会“掉入”下一个case,避免了c语言忘记写break语句产生的错误。 case可以匹配许多不同的模式,包括范围匹配,元组匹配或者抛给指定的类型。匹配值在一个case条件下可以绑定到临时常量或变量,可以在case的代码块中使用,复杂匹配条件下可以表示为每一个case的条件。var i = 0 s
2015-12-01 14:24:32
671
原创 Swift学习之UIButton
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // 自定义
2015-11-27 17:45:13
358
转载 AFNetworking详解
一、什么是AFN全称是AFNetworking,是对NSURLConnection的一层封装虽然运行效率没有ASI高,但是使用比ASI简单在iOS开发中,使用比较广泛AFN的github地址https://github.com/pokeb/AFNetworking/AFNetworking二、AFN结构NSURLConnectionAFU
2015-11-26 19:05:39
551
原创 cocoapods导入Nimbus库报错
错误类型:Too many arguments to function call, expected 0, have 3这几天做项目用到Nimbus,用cocoapods导入,出现15个错误,报的错为Too many arguments to function call, expected 0, have 3 在网上找了很多关于Nimbus出现这个错误的解决方案,资料并不是很多,具体解
2015-11-18 18:16:42
652
转载 iphone数据存储之 Core Data的使用(二)
一、基础概念深入1.NSManagedObjectContext被管理数据上下文就像便笺簿当从数据持久层获取数据时,相当于把这些临时的数据拷贝写在便笺簿上,然后就可以随心所欲的修改这些值。通过上下文,可以对数据记录NSManagedObject进行添加删除更改,记录更改后支持撤销和重做。除非你保存这些数据变化,否则持久层的东西是不会变化。通常我们将
2015-11-10 15:41:14
419
转载 iphone数据存储之 Core Data的使用(一)
一、概念1.Core Data 是数据持久化存储的最佳方式2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型在Mac OS X 10.5Leopard及以后的版本中,开发者也可以通过继承NSPersistentStore类以创建自定义的存储格式3.好处:能够合理管理内存,避免使用sql的麻烦,高效4.构成:(1
2015-11-10 15:37:38
409
原创 自定义UITableViewCell(registerNib: 与 registerClass: 的使用)
自定义UITableViewCell大致有两类方法:(1)使用nib 1、xib中指定cell的Class为自定义cell类型(注意不是设置File's Owner的class) 2、调用 tableView 的 registerNib:forCellReuseIdentifier:方法向数据源注册cell nib注册的代码为[_tableView registerNib:
2015-11-10 14:46:51
476
原创 UIActivityIndicatorView的使用说明
iOS页面加载一般都会给个提示让用户感觉到我们在努力的加载数据,iOS可以通过UIActivityIndicatorView实现类似的效果。UIActivityIndicatorView 提供轻型视图,会显示一个标准的旋转进度轮,只要添加到程序中,在合适的地方start和stop即可。
2015-11-03 15:44:41
629
工程运行时,storyboard里面的控制器是一次性创建,还是用到才创建 ?
2016-04-25
iOS 怎么播放opus格式的音频?
2015-08-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人