iOS基礎開發技巧2

2021-07-24 20:42:33 字數 3808 閱讀 1791

這裡主要講一些我在日常開發中用到的一些小的技巧,其實也算不上技巧吧,就是省去一些不必要的**,或者有的小問題困擾你很久說不行在這裡你能找到答案

在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

在專案中如果我們需要一些公共的引用,或者一些全域性的巨集 那我們經常在pch中設定好

具體怎麼設定呢 在專案下新建乙個pch檔案 

一般我會取名 專案名-prefixheader

在target——>bulid setting 中 設定 prefixheader

我的專案資料夾結構

$(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;

其實就是根據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 基礎開發技巧 一

文章也會同步更新到我的部落格 ppsheep.com 這裡主要講一些我在日常開發中用到的一些小的技巧,其實也算不上技巧吧,就是省去一些不必要的 或者有的小問題困擾你很久說不行在這裡你能找到答案 在專案中如果我們需要一些公共的引用,或者一些全域性的巨集 那我們經常在pch中設定好 具體怎麼設定呢 在專...

iOS開發技巧

1.xcode外掛程式目錄 2.ios靜態庫打包 1.新建工程 framework library 2.寫完framework專案後,直接編譯,會生成 h檔案和.a實現檔案 看不見原始碼的二進位制檔案 但是編譯成 a檔案時,要針對不同的平台編譯 繼而生成不同平台上可以使用的 a 檔案 1 ios d...

iOS開發技巧7

今天開發的時候需要日期轉換成星期的方法 也是網上搜尋到的 nsdateformatter inputformatter nsdateformatter alloc init inputformatter setdateformat nsdate formatterdate inputformatte...