文章也會同步更新到我的部落格:
ppsheep.com
這裡主要講一些我在日常開發中用到的一些小的技巧,其實也算不上技巧吧,就是省去一些不必要的**,或者有的小問題困擾你很久說不行在這裡你能找到答案
在專案中如果我們需要一些公共的引用,或者一些全域性的巨集 那我們經常在pch中設定好
具體怎麼設定呢 在專案下新建乙個pc**件 1
一般我會取名 專案名-prefixheader
在target——>bulid setting 中 設定 prefixheader2
我的專案資料夾結構
$(srcroot)這個是指工程的根目錄
pch.h中
//
//// created by 羊謙 on 2016/10/28.
////在這裡直接定義你的巨集變數 或者公共引用就行
要給tableheaderview賦乙個高度不為0的view才能處理頂部留白
//分組列表頭部空白處理
uiview *view = [[uiview alloc] initwithframe:cgrectmake(0, 0, 0, 0.1)];
self.tableview.tableheaderview = view;複製**
在ios修改view的frame,我們經常需要寫一大堆**,來修改frame中的乙個小屬性,這裡有乙個方法,就是直接修改frame的每個值
新建乙個category uiview+ppsframe.h
#import
@inte***ce uiview (ppsframe)
@property (assign, nonatomic) cgfloat top;//上 相當於frame.origin.y
@property (assign, nonatomic) cgfloat bottom;//下 相當於frame.size.height + frame.origin.y
@property (assign, nonatomic) cgfloat left;//相當於frame.origin.x
@property (assign, nonatomic) cgfloat right;//相當於frame.origin.x+frame.size.width
@property (assign, nonatomic) cgfloat centerx;
@property (assign, nonatomic) cgfloat centery;
@property (assign, nonatomic) cgfloat width;
@property (assign, nonatomic) cgfloat height;
@property (assign, nonatomic) cgsize size;
@end複製**
在.m檔案中設定各個屬性
#import "uiview+layout.h"
@implementation uiview (layout)
@dynamic top;
@dynamic bottom;
@dynamic left;
@dynamic right;
@dynamic width;
@dynamic height;
@dynamic size;
- (cgfloat)top
- (void)settop:(cgfloat)top
- (cgfloat)left
- (void)setleft:(cgfloat)left
- (cgfloat)bottom
- (void)setbottom:(cgfloat)bottom
- (cgfloat)right
- (void)setright:(cgfloat)right
- (cgfloat)centerx
- (void)setcenterx:(cgfloat)centerx
- (cgfloat)centery
- (void)setcentery:(cgfloat)centery
- (cgfloat)width
- (void)setwidth:(cgfloat)width
- (cgfloat)height
- (void)setheight:(cgfloat)height
- (cgsize)size
- (void)setsize:(cgsize)size
@end複製**
其實就是根據view的響應鏈,來查詢viewcontroller
- (uiviewcontroller *)viewcontroller
next = next.nextresponder;
} return viewcontroller;
}複製**
方法二:獲取所有儲存在nsuserdefaults中的資料,因為是按照key-value形式儲存,所以迴圈key就能夠刪除資料
- (void)cleardefaults
[defs synchronize];
}複製**
這裡的定時器,是乙個每秒在主線程跑的乙個方法
__block int countsecond = 30; //倒計時
dispatch_queue_t queue = dispatch_get_global_queue(dispatch_queue_priority_default, 0);
dispatch_source_t timer = dispatch_source_create(dispatch_source_type_timer, 0, 0,queue);
dispatch_source_set_timer(timer,dispatch_walltime(null, 0),1.0*nsec_per_sec, 0); //每秒執行
dispatch_source_set_event_handler(timer, ^);
}else);
countsecond--;
}});
dispatch_resume(timer);複製**
- (long long)filesizeatpath:(nsstring *)path
return 0;
}複製**
- (long long)foldersizeatpath:(nsstring *)path}}
return foldersize;
}複製**
floor(x)函式,是乙個向下取整函式,是乙個c函式 即是去不大於x的乙個最大整數
floor(3.12) = 3 floor(4.9) = 4
與floor(x)函式對應的是ceil函式
這個即是向上取整了
ceil(3.9) = 4 ceil(1.2) = 2複製**
uiimage *image = [uiimage imagenamed:@"image"];
self.myview.layer.contents = (__bridge id _nullable)(image.cgimage);
self.myview.layer.contentsrect = cgrectmake(0, 0, 0.5, 0.5);複製**
未完待續。。。 iOS基礎開發技巧2
這裡主要講一些我在日常開發中用到的一些小的技巧,其實也算不上技巧吧,就是省去一些不必要的 或者有的小問題困擾你很久說不行在這裡你能找到答案 在ios修改view的frame,我們經常需要寫一大堆 來修改frame中的乙個小屬性,這裡有乙個方法,就是直接修改frame的每個值 新建乙個category...
iOS開發技巧
1.xcode外掛程式目錄 2.ios靜態庫打包 1.新建工程 framework library 2.寫完framework專案後,直接編譯,會生成 h檔案和.a實現檔案 看不見原始碼的二進位制檔案 但是編譯成 a檔案時,要針對不同的平台編譯 繼而生成不同平台上可以使用的 a 檔案 1 ios d...
iOS 開發基礎學習 一
預編譯符號 oc中使用 import 匯入乙個標頭檔案 c語言中使用 include包含乙個標頭檔案,類似 import main函式是oc程式入口 import intmain int argc,const char ar return 0 1.c語言的原始檔拓展名為 c oc的拓展名為 m 2....