iOS開發中基礎常用細節問題處理
for (int a = 0 ; a <2; a ++) {
for (int b = 0 ; b < 3 ; b++) {
UIButton * btn = [UIButton buttonWithType:UIButtonTypeSystem];
btn .backgroundColor = [UIColor redColor];
btn .frame = CGRectMake(30 + (320-70)*a, 80 + (60 + 40) * b, 40, 40);
[self .view addSubview:btn];
}
}
// 三行三列
for (int a = 0; a < 9 ; a ++) {
float jiange = (320 - 40 *3)/4;
int x = a%3;
int y = a/3;
UIButton * btn = [UIButton buttonWithType:UIButtonTypeSystem];
btn .backgroundColor = [UIColor redColor];
btn .frame =CGRectMake(jiange + (40 + jiange) *x, jiange + (40 + jiange) * y, 40, 40);
38.如果URL中路徑的字串拼接的時候 有中文 需要編碼 NSString *encodingString = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding
//返回值型別是陣列
NSArray *arr = [F_M contentsOfDirectoryAtPath:filePath error:nil];
NSLog(@"arr===%@",arr);
40 .獲取沙盒檔案中某個檔案的屬性 NSString *filePath =[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/str.plist"];
//返回值型別是字典 所以我們可以通過字典內的鍵值 取出我們想要的資料
NSDictionary *dic = [F_M attributesOfItemAtPath:filePath error:nil];
unsigned long long size= [dic fileSize];
NSLog(@"----%llu",size);
// NSLog(@"dic====%@",dic);41: 輸出物件的時候 設定輸出字串格式 呼叫的方法 //輸出物件的時候 會呼叫該物件的description 方法
-(NSString *)description
{
return [NSString stringWithFormat:@"IP-----%p name----%@ age-----%d",self,self .name,self .age];
}
42: 沙盒檔案中路徑查詢的便捷方式
1.獲取根目錄檔案路徑 NSLog(@"-----%@",NSHomeDirectory());
2.獲取臨時檔案路徑 方法類似於獲取根目錄檔案 路徑NSString * temp = NSTemporaryDirectory();
3.獲取資源包路徑NSString *appPath = [[NSBundle mainBundle]bundlePath];
4.獲取某圖片或資料夾路徑 NSString * imageViewPath =[[NSBundle mainBundle]pathForResource:@"18" ofType:@"jpg"];
5. 獲取某目錄下的檔案 —> 檔案路徑
NSDictionary * dic =[[NSFileManager defaultManager]attributesOfItemAtPath:[self getPath] error:nil];
43: 物件序列化 歸檔 步驟 :
1. 建立可變的data (相當於一個空的袋子 )
NSMutableData * data= [[NSMutableData alloc]initWithCapacity:0];
2.歸檔 關鍵詞 : archiver
NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
3.編碼 : (就是將物件類轉變為二進位制資料的過程)
[archiver encodeObject:_arr];
//如果有多個物件的時候 通過 設定 key值來區分
[archiver encodeObject:_arr forKey:@"arr"];
[archiver encodeObject:_view forKey:@"view"];
4.結束編碼的時候 必須呼叫 接收方法 (完成編碼)
[archiver finishEncoding];
5.可以將轉變為二進位制資料型別的 物件類寫入沙盒中
[data writeToFile: [self getFilePath] atomically:YES];
反序列化 (將二進位制資料型別 轉換為物件類)
1. 在沙盒中取出data資料
NSData * data = [[NSData alloc]initWithContentsOfFile:[self getFilePath]];
2.將取出的資料交給反序列化來讀
NSKeyedUnarchiver * unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
3.解碼
NSArray * arr = [unarchiver decodeObject];
//如果有多個物件 (如上)
NSArray * arr = [unarchiver decodeObjectForKey:@"arr"];
4.結束解碼 :
[unarchiver finishDecoding];
補充 : 為了調取路徑方法方便 可以將獲取路徑封裝成方法 便於呼叫
-(NSString *)getFilePath
{
return [NSHomeDirectory()stringByAppendingPathComponent:@"Documents/arr.plist"];
2.自定義物件轉碼的時候 1. 需要在.h檔案中必須實現的協議 <NSCoding>
2. 在.m 檔案中必須實現的兩個方法
//將people類中的屬性進行編碼//aCoder 編碼器//當用序列化器編碼物件的時候 , 該方法就會被呼叫
-(void)encodeWithCoder:(NSCoder *)aCoder
{
NSLog(@"3333333333");
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeInt:_age forKey:@"age"];
}
//解碼//aDecoder 解碼器//反序列化時 將NSData 解碼成物件型別呼叫的方法
-(id)initWithCoder:(NSCoder *)aDecoder
{
//任意型別 初始化[super init] 方法 self = [super init];
if (self) {
//需要 self.屬性 接收
self .name = [aDecoder decodeObjectForKey:@"name"];
self .age = [aDecoder decodeIntForKey:@"age"];
}
return self;
}
補充 : 如果再建立一個類 繼承與自定義people類時
實現第二個協議方法時 (返回值為id 的協議方法 ) 需要先繼承父類方法 即:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[aDecoder decodeObjectForKey:@"huzi"];
}
return self;
}
快速轉碼 :
1.直接將物件放在沙盒中
[NSKeyedArchiver archiveRootObject:_arr toFile:[self getFilePath]];
2. 在反序列化中直接取出物件
NSArray * arr = [NSKeyedUnarchiver unarchiveObjectWithFile:[self getFilePath]];
44: NSUserDefaults儲存資料 (儲存輕量級的資料(賬號 密碼 是否登入))//1.NSUserDefaults 可以儲存的資料型別 : NSString 字典 陣列 NSNumber BOOL NSData(二進位制資料) NSDate(時間) int(integer) Double float URL(網址)
//2.強制資料及時儲存到沙盒//userDefaults 向沙盒中儲存資料 是按照一定的時間戳定時儲存資料 如果資料還沒來得及儲存 而此時程式出現問題 那麼資料就會丟失 所以 我們可以同步一下強制資料及時儲存到沙盒
//synchronize 同步 保證資料及時的儲存到沙盒中
[userDefaults synchronize];45: NSUserDefaults 實戰中存取檔案
存資料: [[NSUserDefaults standardUserDefaults]setObject:_nameField.text forKey:@"name"];
[[NSUserDefaults standardUserDefaults]setObject:_pswField.text forKey:@"psw"];
//同步資料
[[NSUserDefaults standardUserDefaults]synchronize];取資料:
NSString * nameString = [[NSUserDefaults standardUserDefaults]objectForKey:@"name"];
NSString * pswString =[[NSUserDefaults standardUserDefaults]objectForKey:@"psw"];46:判斷某路徑下是否存在檔案 是不是資料夾 關鍵詞 :fileExistsAtPathNSString *filePath1 =[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/str.plist"];
NSString *filePath2 =[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/ABC"];
BOOL isDirectory ;
BOOL isExist= [F_M fileExistsAtPath:filePath2 isDirectory:&isDirectory];
if (isExist==YES) {
NSLog(@"存在檔案");
if (isDirectory==YES) {
NSLog(@"是個資料夾");
}else{
NSLog(@"不是資料夾");
}
}else{
NSLog(@"不存在檔案");
}
47 .網路請求中網路超時設定 request .timeoutInterval = 10;48. 單元格關鍵控制元件摘要
1.分割線顏色 樣式 :
tableVew .separatorColor =[UIColor redColor];
tableVew .separatorStyle =UITableViewCellSeparatorStyleNone;
2.單元格背景View 可以設定圖片 下拉的時候顯示
tableVew .backgroundView =imageView;3.單元格表頭背景View 可以設定圖片 因為需要設定座標 可以通過封裝方法 然後在ViewDidLoad 方法中呼叫tableVew.tableHeaderView =imageView;
4.檢視修剪cell.imageView.layer.cornerRadius = 50;
cell.imageView.layer.masksToBounds = YES;
5.cell小掛件 cell .accessoryType =UITableViewCellAccessoryDetailButton;6.點選單元格時候的樣式:
cell .selectionStyle = UITableViewCellSelectionStyleNone;
7.如果想把單元格的白色背景去掉的話 需要將tableView 和cell 上的背景顏色都設定為clearColor
8.點選單元格上的按鈕時候 在按鈕繫結的方法中找到點選的是哪一行上的按鈕 需要通過按鈕 找到cell 再通過cell 找到IndexPath
eg:UITableViewCell * cell =(UITableViewCell *)btn.superview.superview;
NSIndexPath * indexPath =[_tableView indexPathForCell:cell];
9.區頭區尾相關內容
//也需要重用區頭和區尾的設定中 相關的控制元件設定和新增需要放在 view .contentView
e.g:
1.view .contentView .backgroundColor = [UIColor grayColor];
2.[view.contentView addSubview:img];
10.
相關推薦
iOS開發中基礎常用細節問題處理
35. 九宮格 //九宮格方法1: 巢狀for 迴圈 for (int a = 0 ; a <2; a ++) { for (int b = 0 ; b < 3 ; b++) { UIButton * btn = [UIButton but
iOS開發中一些常用的方法
1.壓縮圖片#pragma mark 處理圖片 - (void)useImage:(UIImage *)image { NSLog(@"with-----%f heught-----%f",image.size.width,image.size.height);
iOS 開發中null 與的處理
原文連結:http://www.jianshu.com/p/a73aab1c1422 針對(null)這種情況,將一個字串賦值為nil,列印輸出結果就是(null)那麼湧入下來做判斷if(result==nil) { NSLog(@"執行"); } 針對<null>的情況 f([r
iOS開發中常用的宏
tar lin iter standard ffi ant height same alt OC對象判斷是否為空? 字符串是否為空 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] ||
iOS開發中多線程基礎
推斷 傳遞 cti self reads priority cal default value 耗時操作演練 代碼演練 編寫耗時方法 - (void)longOperation { for (int i = 0; i <
ios開發中資料庫讀取資料牽涉到的日期處理:前一天、今天、後天、一週等
對時間處理,在開發時,時常碰到。一般有獲取具體的年月日和星期,兩個不同時間的差,某一天的前一天或後一天等;在這裡我只介紹獲取具體的年月日和星期,及某一天的前一天或後一天的方法; 對時間的處理一般都會用到NSDate類和NSCalendar類兩個類;
關於iOS開發中圖片處理的一些積累(CoreGraphic、CoreImage、GPUImage、OpenGL)
Core Image 前言 貌似公司最近的專案都是和圖片處理有關,拍拍專案中需要將圖片處理成buffer傳到影象匹配拼接演算法中,需要從原圖中摳出一定範圍的影象再貼到新的背景圖中,需要對靜態圖片進行濾鏡操作等等,所以對這方面接觸的相對多一些。
iOS開發中(null)與的處理
補充一個知識 NULL nil Nil NSNull的去唄 標識 值 含義 NULL (void *)0 C指標的字面零值 nil
iOS中的三大定時器 iOS開發中定時器經常會用到,iOS中常用的定時器有三種,分別是NSTime,CADisplayLink和GCD。
iOS開發中定時器經常會用到,iOS中常用的定時器有三種,分別是NSTime,CADisplayLink和GCD。 NSTimer 方式1 // 建立定時器 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:
iOS開發中對JSON解析資料的處理
在網上看到一個例子,對JSON解析出來的資料處理的方法非常簡單,而且通用,把我對它理解的思路寫一下。 首先介紹下JSON解析,JSON解析出來的資料只有陣列和物件兩種結構。 objective - c中用字典來儲存物件資訊。key值對應物件名字,value值對應物件的值。在
ios 開發中的日期和時間處理(轉)
NSDate儲存的是世界標準時(UTC),輸出時需要根據時區轉換為本地時間 Dates NSDate類提供了建立date,比較date以及計算兩個date之間間隔的功能。Date物件是不可改變的。 如果你要建立date物件並表示當前日期,你可以alloc一個NSDate物件並
iOS開發中常用的三方庫
1.網路請求庫 AFNetworking2.圖片快取器 SDWebImage3.下拉重新整理上拉載入 MJRefresh4.JSON與Object互轉 JSONModel5.載入進度框 MBProgressHUD6.Toast提示資訊 SVProgressHUD7.鍵盤管理 IQKeyboardManager
iOS開發中瀏覽器能開啟的URL,WebView打不開的處理方法
由於內容簡單,載入不出來是編碼不一致的問題,下面是解決方法: NSString *encodedString = [url stringByAddingPercentEscapesU
ios開發中常用的擷取指定區域的檢視轉換成圖片
-(void)fullScreenshots{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; UIGraphicsBeginImageContext(screen
iOS開發中,對請求資料出現的一些簡單處理
這裡呢是整理的一位老鳥的東西,好東西得分享 大致實現思路就是迴圈便利做比較,如果發現是NSNull型別的就把值改為空字串;這樣的好處就是當資料請求回來,刪除一下資料裡面為<null>型別的東西,避免在直接取的時候產生程式崩潰問題; 兩個方法,一個返回NSA
iOS開發中遇到的常用的小知識
1、launchImage如果不設定,或是圖片尺寸設定不正確,app啟動時會出現短暫的黑屏 2、啟動動畫簡單示例,在app delegate中寫 //圖片擴大淡出的效果開始; //設定一個圖片; niceView = [[UIImageViewalloc] in
ios開發中常用的幾種輔助方法
//1.Keychain本地長期鍵值儲存 //刪除 +(void)deleteStringForKey:(NSString *)aKey { NSMutableDictionary *query = [NSMutableDictionary dictionary];
iOS開發中SQLite簡單使用(基礎用法:建立表,增、刪、改、查)
SQLite,是一款輕型的資料庫,是遵守ACID的關係型資料庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域專案。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產
iOS開發中的ARC記憶體管理機制(1)——基礎概念
由於移動裝置的記憶體資源一般比較少,所以垃圾回收機制的操作會對裝置的效能造成比較明顯的影響,有可能在執行垃圾回收的時候讓移動裝置出現卡頓,這對於使用者來說是很難受的事。 由此蘋果公司提出了ARC方案。 0x01 自動引用計數 自動引用計數(Automatic Ref
iOS開發中地圖與定位
視圖 編寫 aps 簡單 -a 第三方 span spa margin 不管是QQ還是微信的移動client都少不了定位功能,之前在微信demo中沒有加入定位功能,今天就寫個定位的小demo來了解一下定位和地圖的東西。地圖和定位看上去是挺高大上一東西。其有使用方法比