iOS 基礎開發技巧 一

2021-09-11 12:41:30 字數 3830 閱讀 7774

文章也會同步更新到我的部落格:

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....