1.在info.plist里面添加字段
key----View controller-based status bar appearance
value---NO
在appDelegate里面添加代码:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
Translate
2014年3月24日 星期一
把状态栏的文字颜色改成白色
几种常见的GCD用法
GCD详细介绍
/**< 自定义queue,默认串行: NULL == DISPATCH_QUEUE_SERIAL*/
/**< label:标签,用于标注queue*/
// dispatch_queue_t queue = dispatch_queue_create("label", NULL);
//
// dispatch_async(queue, ^{
// NSLog(@"test");
// });
/**< 自定义queue,并行或串行: DISPATCH_QUEUE_CONCURRENT或DISPATCH_QUEUE_SERIAL*/
// dispatch_queue_t serial_queue = dispatch_queue_create("标签", DISPATCH_QUEUE_CONCURRENT);
// dispatch_async(serial_queue, ^(){
// sleep(5);
// NSLog(@"block_1"); // 尽管为异步调用且延迟3秒,但如果在serial队列中,block_1仍然先于block_2被打印出来
// });
// dispatch_async(serial_queue, ^(){
// NSLog(@"block_2");
// });
/**< 延迟执行*/
/**< (int64_t)(delayInSeconds * NSEC_PER_SEC):转换成毫秒*/
// double delayInSeconds = 5.0;
// dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
// dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// NSLog(@"5s delay");
// });
/**< 常用的异步并发执行*/
// dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
// sleep(5);
// NSLog(@"block_1");
// });
//
// dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
// NSLog(@"block_2");
// });
/**< 异步并回调主线程,常用ui更新*/
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"to do with ui");
});
});
截取屏幕中局部图片
-(void)screenShotRect:(CGRect)aRect //arect 想要截图的区域
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(640, 960), YES, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = viewImage.CGImage;
CGRect rect =aRect;//这里可以设置想要截图的区域
CGImageRef imageRefRect =CGImageCreateWithImageInRect(imageRef, rect);
UIImage *sendImage = [[UIImage alloc] initWithCGImage:imageRefRect];
NSData *imageViewData = UIImagePNGRepresentation(sendImage);
//第一,保存到沙盒
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"zone.png"];
NSLog(@"%@", savedImagePath);
[imageViewData writeToFile:savedImagePath atomically:YES];
CGImageRelease(imageRefRect);
//第二,保存到相册
UIImage *image = [UIImage imageWithData:imageViewData];
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
}
iOS7 UITableView底線右移問題
在ios7上UITableView底线右移了,我们可以通过添加代码来让它铺满整个屏幕的宽,在使用前要加上判断是否有这个方法,因为只有ios7以上才有。
if ([_tableView respondsToSelector:@selector(setSeparatorInset:)])
{
[_tableView setSeparatorInset:UIEdgeInsetsZero];
}
2014年3月6日 星期四
二進制,八進制,十進制,十六進制
因為自己不是資訊本科系畢業所以有些觀念都不太清楚
在今天偶然看到關於這些進制的解說
讓我忽然領悟了
所以寫下來避免自己又忘光光
不多說直接上截圖
我們用十進制的19來做範例,轉成二進制的算法
並且將19除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
相對的從八進制轉到二進制,利用1除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
利用7除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
此圖的文字,高位不足三位補零!應該改為高位不足四位補零!!!!
相對的從十六進制轉到二進制,利用7除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
利用3除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
相對的從十六進制轉到二進制,利用7除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
利用3除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
在今天偶然看到關於這些進制的解說
讓我忽然領悟了
所以寫下來避免自己又忘光光
不多說直接上截圖
我們用十進制的19來做範例,轉成二進制的算法
並且將19除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
相對的從八進制轉到二進制,利用1除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
利用7除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
此圖的文字,高位不足三位補零!應該改為高位不足四位補零!!!!
相對的從十六進制轉到二進制,利用7除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
利用3除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
相對的從十六進制轉到二進制,利用7除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
利用3除以2,結束的條件是商為0,並借由每次的餘數轉換成二進制數值。
2014年3月2日 星期日
<轉帖>iOS项目的目录结构和开发流程
iOS项目的目录结构和开发流程
目录结构
AppDelegate
Models
Macro
General
Helpers
Vendors
Sections
Resources
一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化。
AppDelegate
这个目录下放的是AppDelegate.h(.m)文件,是整个应用的入口文件,所以单独拿出来。
Models
这个目录下放一些与数据相关的Model文件,里面大概是这样:
Models
|- BaseModel.h
|- BaseModel.m
|- CollectionModel.h
|- CollectionModel.m
...
Macro
这个目录下放了整个应用会用到的宏定义,里面大概是这样:
Macro
|- AppMacro.h
|- NotificationMacro.h
|- VendorMacro.h
|- UtilsMacro.h
...
AppMacro.h 里放app相关的宏定义,如:
// 表情相关
#define EMOTION_CACHE_PATH @"cachedemotions"
#define EMOTION_RECENT_USED @"recentusedemotions"
#define EMOTION_CATEGORIES @"categoryemotions"
#define EMOTION_TOPICS @"emotiontopics"
// 收藏相关
#define COLLECT_CACHE_PATH @"collected"
// 配图相关
#define WATERFALL_ITEM_HEIGHT_MAX 300
#define WATERFALL_ITEM_WIDTH 146
NotificationMacro.h 里放的是通知相关的宏定义。
UtilsMacro.h 里放的是一些方便使用的宏定义,如:
#define UIColorFromRGB(r,g,b) [UIColor \
colorWithRed:r/255.0 \
green:g/255.0 \
blue:b/255.0 alpha:1]
#define NSStringFromInt(intValue) [NSString stringWithFormat:@"%d",intValue]
VendorMacro.h 里放一些第三方常量,如:
#define UMENG_KEY @"xxxxx"
#define UMENG_CHANNEL_ID @"xxx"
如果有新的类型的宏定义,可以再新建一个相关的Macro.h。
General
这个目录放会被重用的Views/Classes和Categories。里面大概是这样:
General
|- Views
|- TPKScollView
|- TPKPullToRefresh
...
|- Classes
|- TPKBaseViewController
|- TPKHorizontalView
...
| - Categories
|- UIViewController+Sizzle
|- UIImageView+Downloader
...
这里的TPK是项目的首字母缩写。
Helpers
这个目录放一些助手类,文件名与功能挂钩。里面大概是这样:
Helpers
|- TPKShareHelper
|- TPDBHelper
|- TPKEmotionHelper
...
助手类的主要作用是帮助Controller瘦身,也可以提供一定程度的复用。
Vendors
这个目录放第三方的类库/SDK,如UMeng、WeiboSDK、WeixinSDK等等。
Sections
这个目录下面的文件对应的是app的具体单元,如导航、瀑布流等等。里面大概是这样:
Sections
|- Menu
|- Setting
|- Collection
...
Resources
这个目录下放的是app会用到的一些资源,主要是图片。
訂閱:
意見 (Atom)














