0%

最近在项目中遇到这样一个坑:项目中NavigationController之下的ViewControllersNavigationBar有不同的样式(纯色Translucent,完全透明、隐藏等样式)。由于NavigationBar的颜色不同,StatusBar的颜色也必须随着其颜色深浅来作出适配。

适配StatusBar

- (UIStatusBarStyle)preferredStatusBarStyle方法的半残废,在NavigationController下的ViewControllers直接使用该方法是不会执行的,因为NavigationController的特殊性,同时在查阅Apple官方文档可以重写childViewControllerForStatusBarStyle这个方法:

阅读全文 »

SSH可以让我们通过不同的私钥来登陆不同的域。

生成私钥

在新增私钥的时候,通过指定不同的文件名来生成不同的私钥文件:

1
2
3
ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C "Key for GitHub"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_gitcoding -C "Key for GitCoding"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_gitosc -C "Key for GitOSC"
阅读全文 »

介绍

在Xcode项目中存在这两个版本号,分别是Bundle versionBundle versions string, short,都是在Info.plist文件中。

区别

  • Bundle version:这个一般是开发这需要关注的,因为这个代表每一次打包发布的版本号码,对于持续化集成维护方面能够准确定位到哪个版本出问题。
  • Bundle versions string, shotr:这个是给用户关注的版本号,通常正式发布一个上线版本才会修改这个版本号,以表示升级,用户通过该版本号向开发者反馈问题。
阅读全文 »

在Swift中多出了这两个玩意?!,到底是什么鬼?!

用法

在声明变量的时候会用到:

1
2
var sunny: String?
var young: String!

在调用变量进行使用操作会用到:

1
2
sunny?.isEmpty
young!.isEmpty //其实这里可以这样写young.isEmpty

普通情况下,在声明一个变量的时候如果不手动初始化,则不会自动给该变量一个初始的默认值:

1
2
var sunny: String   //没有任何值
println(sunny) //报错
阅读全文 »

UIAlertView和UIActionSheet之类的控件只支持Delegate方式作为回调,但是这样小的操作要把代码分散开来就很不爽了~因此有了BlocksKit这个第三方开源扩展库,但是如果要自己封装一个的话也未免不可~主要是用到了关联来扩展了它们的属性。

直接来个UIAlertView做个例子

1
2
3
4
5
6
7
8
9
10
#import <UIKit/UIKit.h>
#import <objc/runtime.h>

typedef void(^CompletionBlock) (NSInteger buttonIndex);

@interface UIAlertView (Block)

- (void)showAlertViewWithCompletion:(CompletionBlock)completion;

@end
阅读全文 »

iOS DevCenter到底是什么鬼,个人觉得界面不清晰(虽然已经比以前好了)但是各个证书的关系比较难理解,再加上新版的Xcode集成了部分管理证书的功能,但是!缺偏偏只做了一半,部分功能还是得上网页上去管理,像我这种懒人肯定懒得看官方的全英文档来理解,不过这种东西,还是这句话:“用得多就自然懂了”。

Certificates

证书主要分为两类:Development和Production,Development证书用来开发和调试应用程序,Production主要用来分发应用程序。

阅读全文 »

编译命令:

1
xcodebuild -workspace YourWorkSpaceName.xcworkspace -scheme YourProjectName SYMROOT=$(PWD)/build`

Archive命令:

1
xcodebuild -workspace YourWorkSpaceName.xcworkspace -scheme YourProjectName archive -archivePath ~/Desktop/ShareJobStudent.xcarchive
阅读全文 »

一开始Google了解到在iOS开发中的Category是不可以添加property的,via:StackOverFlow,其实当时我是信的,但是后来发现在别的开源代码中readonly属性的property能够在运行时给它们赋值操作,借助于Objective-C Runtime中的关联,所谓关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。

两个主要方法

1
2
id objc_getAssociatedObject ( id object, const void *key );
void objc_setAssociatedObject ( id object, const void *key, id value, objc_AssociationPolicy policy );
阅读全文 »