你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發小技巧總結

iOS開發小技巧總結

編輯:IOS開發綜合

iOS開發小技巧總結

tip 1 : 給UIImage添加毛玻璃效果

func blurImage(value:NSNumber) -> UIImage {

let context = CIContext(options:[KCIContextUseSoftwareRenderer:true])

let ciImage = CoreImage.CIImage(image:self)

let blurFilter = CIFilter(name:"CIGassianBlur")

blurFilter?.setValue(ciImage, forKey:KCIInputImageKey)

blurFilter?.setValue(value, forKey:"inputRadius")

let imageRef = context.createCGImage((blurFilter?.outputImage)!, fromRect:(ciImage?.extent)!)

let newImage = UIImage(CGImage:imageRef)

return newImage

}

value : value代表毛玻璃效果的程度

核心內容:let blurFilter = CIFilter(name:"CIGassianBlur") 使用濾鏡工具

tip 2 : 圖片壓縮

func imageCompress(targetWidth:CGFloat) -> UIIMage {

let targetHeight = targetWidth/width*height

UIGraphicsBeginImageContext(CGSizeMake(targetWidth,targetHeight))

self.drawInRect(CGRectMake(0,0,targetWidth,targetHeight))

let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()

UIGrapicsEndImageContext()

return newImage

}

這裡是按原UIImage比例做壓縮所以:let targetHeight = targetWidth/width*height

tip 3 : SVN & Git 用法總結

一:SVN

A. 項目經理:1.創建項目—CheckIn

2.設置項目人員

B.工作人員:1.CheckOut 獲取項目的完整副本,此工作只需要做"一次"

2. 工作寫代碼....

3.階段性工作完成後,Commit(提交) 將自己修改的文件,上傳到服務器

每天下班前一定要做一次能夠編譯的提交!

4.定期Update項目,從服務器將最新的內容更新到本地,每天上班第一件事情一定要做的事情!

二. Git

A.項目經理:1.創建項目push

2.設置項目人員

B. 工作人員:1.Pull從服務器下拉最新的本版

2.Commit是將修改過的代碼提交至本地的代碼庫

3.每天下班前Push自己當前的代碼到服務器

4.每天上班前從服務器Pull最新的內容

三. M / A 文件更新

對於文件夾svn支持並不好,需要在工具下選定文件夾commit

對應文件選定文件commits

由於過去在公司多半時間是做獨立開發,最多人的時候也是兩個人做開發,所以協作工具用的少,但是不斷的關注著兩種代碼倉庫管理工具,總結了一些tip,還有待實踐驗證,吐槽吧......

tip 4: UINavigationController下的坐標系

iOS 9 前:

navigationBar 如果設置了背景圖片,那麼可視化坐標會從navgationbar下面開始

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"nav"), forBarMetrics:UIBarMetrics.Default)

iOS 9 後 : 坐標從狀態欄下面開始

tip 5 : C字符串轉成NSString & NSString轉成C字符串

const char *cString = "CString";

C字符串轉成NSString : NSString *str = [NSString stringWithUTF8String:cString];

NSString * str = @"NSString";

NSString轉成C字符串 : const char *cString = [str UTF8String];

tip 6 : OC & Swift 代碼塊(語法糖)

Objective-C :

UILabel *label1 = ({

UILabel *label = [UILabelnew];

[self.view addSubview:label];

label.frame=CGRectMake(100,100,100,45);

label.backgroundColor= [UIColor redColor];

label.text=@"大家好1";

label;

});

UILabel*label2 = ({

UILabel*label = [UILabel new];

[self.view addSubview:label];

label.frame=CGRectMake(100,160,100,45);

label.backgroundColor= [UIColor redColor];

label.text=@"大家好2";

label;

});

UILabel*label3 = ({

UILabel*label = [UILabel new];

label.frame=CGRectMake(100,250,100,45);

label.backgroundColor= [UIColor redColor];

label.text=@"大家好3";

label;

});

[self.viewaddSubview:label3];

({

UILabel *label = [UILabel new];

[self.view addSubview:label];

label.frame=CGRectMake(100,310,100,45);

label.backgroundColor= [UIColor redColor];

label.text=@"大家好4";

});

Swift:

letlabel1:UILabel= {

let label =UILabel()

self.view.addSubview(label)

label.frame=CGRectMake(100,100,100,45)

label.backgroundColor=UIColor.redColor()

label.text="大家好"

return label

}()

let label2:UILabel= {

let label =UILabel()

label.frame=CGRectMake(100,200,100,45)

label.backgroundColor=UIColor.redColor()

label.text="大家好"

return label

}()

self.view.addSubview(label2)

使用語法糖的好處就是拷貝代碼時只需做少許的修改就可以達到目的,如上面的栗子,想要創建多個label,只要賦值粘貼,改一處,也就是對象名稱就可以輕松完成!

tip 7 : 數據持久化方式歸納總結

數據緩存方式選擇:

1: fmdata數據庫(增刪改查) --數據需要:增刪改查

2: coreData --數據需要:增刪改查

3:序列化(NSUserDefault) --狀態、偏好設置、默認選項

4:單獨.plist --列表數據,城市信息等

5:單獨.json文件 --頁面列表數據

6: realm框架(增刪改查) --數據需要:增刪改查

7: FastCoder 某“強哥”推薦,哈哈哈!

tip 8 : 清理Profiles證書文件

~/Library/MobileDevice/Provisioning Profiles

由於平時會負責多個項目的上線管理或是開發工作,因此MAC中有很多簽名文件,有時候都分不清東西南北,一不做,二不休,前往這個目錄下,將文件刪個精光,調試的時候用到證書再update一下當前項目的證書即可

tip 9 : 拿到當前屏幕所看到的viewController

Objective-c版本:

- (UIViewController *)getAppRootViewController

{

UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;

UIViewController *topVC = appRootVC;

while (topVC.presentedViewController) {

topVC = topVC.presentedViewController;

}

return topVC;

Swift版本:

func getAppRootViewController()->UIViewController?{

vartopVC=UIApplication.sharedApplication().keyWindow?.rootViewController

while topVC?.presentedViewController!=nil{

topVC=topVC?.presentedViewController

}

return topVC?

}

tip 10 : 制作pch文件

步驟:

1、新建iOS->Other->PCH File

2、targets->BuildSetting->Prefix Header->設置$(SRCROOT)/文件在工程中的路徑

3、pch能像以前一樣正常使用

如:$(SRCROOT)/FirstProject/PrefixHeader.pch

FirstProject : pch路徑中的最後一個拓展名

PrefixHeader.pch: 是pch文件名

簡介:/Users/ly/Desktop/FirstProject/FirstProject

tip 11 : 設置UINavigationController title

當 UIViewController作為UINavigationController的根視圖控制器的時候,將這個Nav(root)賦給 tabBarController時,

這樣寫:

root.title = @“title”;

那麼 :self.naviagtionItem.title 會顯示 title

同時 :nav.tabBarItem.title 也會顯示 title

tip 12 : 判斷UIScrollView是橫向滾動還是豎向滾動

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer {

if([gestureRecognizerisKindOfClass:[UIPanGestureRecognizerclass]]) {

CGPointvelocity = [(UIPanGestureRecognizer*)gestureRecognizervelocityInView:gestureRecognizer.view];

BOOLisHorizontalPanning =fabsf(velocity.x) >fabsf(velocity.y);

return isHorizontalPanning;

}

returnYES;

}

tip 13 : 監聽 backBarButtonItem 返回事件

github上搜: UIViewController+BackButtonHandler 開源項目

tip 14 : 讓一個view透明度失效

self.view.backgroundColor=UIColor(colorLiteralRed:255.0/255, green:255.0/255, blue:255.0/255, alpha:0.3)

let subView = UIView()

subView.tintColor=UIColor.whiteColor()//不透明了

self.view.addSubview(subView)

tip 15 : 從ipod庫中讀出音樂文件

// 從ipod庫中讀出音樂文件

MPMediaQuery*everything=[[MPMediaQueryalloc]init];

//讀取條件

MPMediaPropertyPredicate*albumNamePredicate=[MPMediaPropertyPredicatepredicateWithValue:[NSNumbernumberWithInt:MPMediaTypeMusic]forProperty:MPMediaItemPropertyMediaType];

[everythingaddFilterPredicate:albumNamePredicate];

NSLog(@"Loggingitemsfromagenericquery...");

NSArray*itemsFromGenericQuery=[everythingitems];

for(MPMediaItem*songinitemsFromGenericQuery){

NSString*songTitle=[songvalueForProperty:MPMediaItemPropertyTitle];

NSLog(@"%@",songTitle);

}

tip 16 : 廣告標示符(adId) & adfv標示符的那些事

1.如何識別一個應用安裝在同一個設備上呢?

2.如何識別一個企業的應用安裝在同一個設備上呢?

蘋果給我們提供了advertisingIdentifier 來解決問題1;

只要是同一台設備,那麼advertisingIdentifier就是一樣的

但是如果在設置-隱私-廣告那裡關掉這個權限或是還原設備的話,就沒辦法了哭死去吧

蘋果給我們提供了identifierForVendor 來作為一個企業的app標示符

比如: com.game.yoyo

com.game.xoxo

只要在同一台設備上,那麼identifierForVendor 是一樣的

如果:com.game.yoyo

com.buyer.yoyo

不管是不是同一個應用identifierForVendor 都是不一樣的

上代碼:

廣告id:

#import

//每個設備有唯一一個,如果重置廣告或設置-隱私-關閉廣告就會關閉更換

NSString*adId = [[[ASIdentifierManagersharedManager]advertisingIdentifier]UUIDString];

企業id:

NSString*idfv = [[[UIDevicecurrentDevice]identifierForVendor]UUIDString];

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved