看完了MJ老师的微博项目视频,准备自己动手写一下,记录开发中的一些感想。
1、首先判断是否第一次使用该版本,如果是,先跳转到新特性界面,否则,直接跳到主界面,代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// 删除storyboard后 需设置其window
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
// 1、从Info.plist中取出版本号
NSString *versionKey = (NSString *)kCFBundleVersionKey;
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[versionKey];
// 2、从沙盒中取出上次存储的版本号
NSString *storedVersion = [[NSUserDefaults standardUserDefaults]objectForKey:versionKey];
// 3、判断plist中的版本号与沙盒中的版本号是否一致
if ([version isEqualToString:storedVersion] ) {
application.statusBarHidden = NO;
if ([AccountTool sharedAccountTool].currentAccount) {
self.window.rootViewController = [[CLQMainViewController alloc]init];
}else{
self.window.rootViewController = [[CLQOauthController alloc]init];
}
}else{ // 版本号不一样,第一次使用新版本
[[NSUserDefaults standardUserDefaults]setObject:currentVersion forKey:versionKey];
[[NSUserDefaults standardUserDefaults] synchronize];
// 显示版本新特性界面
self.window.rootViewController = [[NewFeatureViewController alloc]init];
}
// window默认不显示,不能缺少该语句
[self.window makeKeyAndVisible];
return YES;
}
注意:不使用storyboard时,需要增加以下两行语句:
self.window = [[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];
[self.windowmakeKeyAndVisible];
2、 在新特性界面添加背景图片、scrollView和一些按钮、label等
使用iOS8.1 sdk,添加scrollImage时,图片下方留有20的空白,解决方法:设置scrollView的frame为全屏:
<span style="white-space:pre"> </span>scrollView.frame = [UIScreen mainScreen].bounds;
在做checkBox风格的按钮时,为了使松开按钮后其背景图片不会切换,需监听按钮的点击事件:
// 设置监听事件,选中按钮之后图片更改,松开图片不变
[sharedButton addTarget:self action:@selector(share:) forControlEvents:UIControlEventTouchUpInside];
#pragma mark 分享按钮的监听事件
-(void)share:(UIButton *)button
{
button.selected = !button.selected;
}
由于目前scrollView中只有一个image,需要设置pageControl在单个页面时隐藏:
pageControl.hidesForSinglePage = YES; // 单个页面时隐藏
3、最后效果如下: