Stay Hungry! Stay Foolish!
在项目中,点击某个按钮需要整个屏幕用阴影覆盖,点击阴影后阴影消失。因为阴影是个UIView,所以需要给阴影加上点击事件。
以UIView类型的self.baseView为例:
首先设定UIView(或其子类)为可交互的:
1 | self.baseView.userInteractionEnabled = YES; |
这里要说明一下,UIImageView和UILabel默认的userInteractionEnabled为NO,而UIView默认为YES。
添加tap手势:
1 | //tap手势 |
将手势添加至需要相应的view中
1 | [self.baseView addGestureRecognizer:singleTap]; |
执行触发的方法:
1 | -(void)handleSingleTap:(UITapGestureRecognizer *)sender{ |
默认为单击触发事件:
设置手指个数:
1 | [handleSingleTap setNumberOfTapsRequired:1]; |
获取是哪个View触发了此方法:
1 | sender.view ; |
初始化一个Git仓库,使用git init
命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>
,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit
,完成。
git add
命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到分支。
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
1 | makdir ~/hello-world //创建一个项目hello-world |
第一次关联仓库,提交:
1 | echo "# about-me" >> README.md |
其中在仓库已经建立好、链接好之后,如果修改了代码再提交只需使用:
1 | git add --all |
如果输入git remote add origin git@github.com:mocilas/about-me.git
提示出错信息:fatal: remote origin already exists.
解决办法如下:
1、先输入git remote rm origin
2、再输入git remote add origin git@github.com:mocilas/about-me.git
就不会报错了!
如果输入git push origin master
提示出错信息:error:failed to push som refs to …….
解决办法如下:
1、先输入git pull origin master //先把远程服务器github上面的文件拉下来
2、再输入git push origin master
3、如果出现报错 fatal: Couldn’t find remote ref master或者fatal: ‘origin’ does not appear to be a git repository以及fatal: Could not read from remote repository.
4、则需要重新输入git remote add origingit@github.com:mocilas/about-me.git
这周在做项目的时候遇到了几个问题,记录一下:
在写UITableView的Footer的时候,可能是系统自带函数写错,导致footer不能正常显示,在这里记录一下,以后这种函数不要再写错:- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{}
ios系统自带有翻书效果:UIPageViewController 之后有机会要研究一下!
项目中有一个从后台拉取数据显示的页面。从后台拉取的数据models需要按照其所属的课文分类。
self.sortedSections[0]=@"识字(一)";
相应于sections中,以“识字(一)”为标签的数据对应的key由原来的“识字(一)”改为“0”。这样即使内容是有重复的,但是序号是不会重复的。在做课本目录的时候,有一个阴影要叠加。但是我明明都把初始化view的函数写好了,阴影仍然不显示。后来发现是初始化的顺序有问题。应该先init UITableView,再init阴影。否则阴影就被tableview覆盖了,就显示不出来了。
[view removeFromSuperview];
这个命令只是把view从它的上一层superview中移除,而view本身并没有被销毁,只是看不见了,如果再add进去的话还是有的。如果要销毁这个view的话,直接置空即可:view = nil;
- (void)removeFromSuperview
在添加下拉菜单的时候,每个选项都是相同的,而我是一个一个控件写的,后来被峰峰批评了= =,说应该用for循环的。于是我改为了for循环,源码如下。这样如果还要有新的选项加进去的话,只需要往数组里添加字符串就行了。
1 | NSArray *subject = @[@"语文课本",@"数学课本",@"英语课本"]; |
引用来源:http://objccn.io/issue-7-1/
如果数组存储的是字符串对象,sortedArrayUsingSelector:是第一选择:
NSArray *array = @[@"John Appleseed", @"Tim Cook", @"Hair Force One", @"Michael Jurewitz"];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
下面的代码对存储数字的内容同样很好,因为 NSNumber 实现了 compare::
NSArray *numbers = @[@9, @5, @11, @3, @1];
NSArray *sortedNumbers = [numbers sortedArrayUsingSelector:@selector(compare:)];
如果想更可控,可以使用基于函数指针的排序方法:
- (NSData *)sortedArrayHint;
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator
context:(void *)context;
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator
context:(void *)context hint:(NSData *)hint;
苹果增加了一个方法来加速使用 sortedArrayHint 的排序。
hinted sort 方式在你有一个已排序的大数组 (N 个元素) 并且只改变其中一小部分(P 个添加和删除,这里 P远小于 N)时,会非常有效。你可以重用原来的排序结果,然后在 N 个老项目和 P 个新项目进行一个概念上的归并排序。为了得到合适的 hint,你应该在原来的数组排序后使用 sortedArrayHint 来在你需要的时候(比如在数组改变后想重新排序时)保证持有它。
因为block的引入,也出现了一些基于block的排序方法:
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr;
- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts
usingComparator:(NSComparator)cmptr;
性能上来说,不同的方法间并没有太多的不同。有趣的是,基于 selector 的方式是最快的。可以在 GitHub 上找到测试用的源代码:
Sorting 1000000 elements. selector: 4947.90[ms] function: 5618.93[ms] block: 5082.98[ms].
为了备忘,把hexo的使用方法记一下:
在teminal上新建一个Markdown文件:1
$ hexo new '文件名'
其中文件名可以用单引号,也可以用双引号。
在做好md文件之后,在terminal中输入1
$ hexo s --debug
来看一下有没有问题。
此时便可以在http://localhost:4000/ 上看到自己的博客了。
然后command+t另开启一个terminal,输入1
$ hexo g
生成本地静态网页文件。
最后输入1
$ hexo d
部署到github上,过一阵便可以在http://mocilas.github.io 上看到更新后的博客了。
ps:如果http://mocilas.github.io 上还没有更新,可以去自己的github仓库里看有没有上传成功。