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") 使用濾鏡工具
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
一: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,還有待實踐驗證,吐槽吧......
iOS 9 前:
navigationBar 如果設置了背景圖片,那麼可視化坐標會從navgationbar下面開始
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"nav"), forBarMetrics:UIBarMetrics.Default)
iOS 9 後 : 坐標從狀態欄下面開始
const char *cString = "CString";
C字符串轉成NSString : NSString *str = [NSString stringWithUTF8String:cString];
NSString * str = @"NSString";
NSString轉成C字符串 : const char *cString = [str UTF8String];
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,只要賦值粘貼,改一處,也就是對象名稱就可以輕松完成!
數據緩存方式選擇:
1: fmdata數據庫(增刪改查) --數據需要:增刪改查
2: coreData --數據需要:增刪改查
3:序列化(NSUserDefault) --狀態、偏好設置、默認選項
4:單獨.plist --列表數據,城市信息等
5:單獨.json文件 --頁面列表數據
6: realm框架(增刪改查) --數據需要:增刪改查
7: FastCoder 某“強哥”推薦,哈哈哈!
~/Library/MobileDevice/Provisioning Profiles
由於平時會負責多個項目的上線管理或是開發工作,因此MAC中有很多簽名文件,有時候都分不清東西南北,一不做,二不休,前往這個目錄下,將文件刪個精光,調試的時候用到證書再update一下當前項目的證書即可
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?
}
步驟:
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
當 UIViewController作為UINavigationController的根視圖控制器的時候,將這個Nav(root)賦給 tabBarController時,
這樣寫:
root.title = @“title”;
那麼 :self.naviagtionItem.title 會顯示 title
同時 :nav.tabBarItem.title 也會顯示 title
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer {
if([gestureRecognizerisKindOfClass:[UIPanGestureRecognizerclass]]) {
CGPointvelocity = [(UIPanGestureRecognizer*)gestureRecognizervelocityInView:gestureRecognizer.view];
BOOLisHorizontalPanning =fabsf(velocity.x) >fabsf(velocity.y);
return isHorizontalPanning;
}
returnYES;
}
github上搜: UIViewController+BackButtonHandler 開源項目
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)
// 從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);
}
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];