[iOS] 漸層色彩影像 (Gradient Color Image)
近年來App流行漸層色彩影像 (Gradient Color Image),我們不想要美術師出圖,因為有很多螢幕尺寸要考量,所以想由程式碼來個別生成。
結果圖上有三個Image View,上圖為單純藍色,左下為水平漸層黑色alpha值由1到0,右下為垂直漸層黑色alpha值由1到0。
我將所需要的程式碼檔案放在GitHub Gist:Gradient Color Image。
近年來App流行漸層色彩影像 (Gradient Color Image),我們不想要美術師出圖,因為有很多螢幕尺寸要考量,所以想由程式碼來個別生成。
結果圖上有三個Image View,上圖為單純藍色,左下為水平漸層黑色alpha值由1到0,右下為垂直漸層黑色alpha值由1到0。
我將所需要的程式碼檔案放在GitHub Gist:Gradient Color Image。
該是好好學習Swift 2.0的時候囉~上週Apple才宣布Swift開源化!趁著棘手的專案告一段落,我要利用時間學習iOS新的開發語言,讓公司的戰力可以延續下去。
首先我們會遇到,以Swift為主的專案想使用Objective C的類別,因為我們可能沒啥時間去重刻,於是想要Objective C直接轉生為Swift來使用。
在此我們建立一個Swift專案名為HappyTest8,接著新增Cocoa Touch Class語言為Objective C,並名為HTMainViewController。
很多時候我們會把資料儲存在User Defaults,也就是本機端,只要App不被刪掉,那麼每次重新開啟App,就能再從User Defaults取得先前所儲存的資料。
有某時候我們需要把User Defaults給清空,比如要給其它帳號使用,此時登出A就要將A所儲存的User Defaults給清除乾淨,而登入B後又是全新沒有受污染的User Defaults。
該怎麼做呢?以下的code就能刪除所有存在User Defaults中的key,不過卻不會刪掉系統預設的key呢!
/**
Theme: Delete User Defaults
IDE: Xcode 7
Language: Objective C
Date: 104/12/07
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
#pragma mark - 刪除 UserDefaults
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [defs dictionaryRepresentation];
for (id key in dict) {
[defs removeObjectForKey:key];
}
[defs synchronize];
清空前的User Defaults之key群:
(
GGUserDefaultsKeyLoginAccount,
AppleKeyboardsExpanded,
GGUserDefaultsKeyLoginPassword,
PCSavePendingUserDefaults,
GGUserDefaultsKeyhasFirstShowMenu,
GGUserDefaultsKeyIsLogin,
INNextHearbeatDate,
com.apple.content-rating.ExplicitBooksAllowed,
GGUserDefaultsKeyLoginPasswordAlternative,
AppleKeyboards,
HasUserRegisteredFonts,
PKEnableStockholmSettings,
GGUserDefaultsKeyRememberPassword,
AppleLanguagesDidMigrate,
com.apple.content-rating.TVShowRating,
com.apple.content-rating.ExplicitMusicPodcastsAllowed,
NSLanguages,
com.apple.content-rating.MovieRating,
GGUserDefaultsKeyQBId,
GGUserDefaultsKeyLoginAccountAlternative,
PreferredLanguages,
AddingEmojiKeybordHandled,
MSVLoggingMasterSwitchEnabledKey,
AppleLocale,
AppleLanguages,
NSInterfaceStyle,
com.apple.content-rating.AppRating,
AppleITunesStoreItemKinds
)
清空後的User Defaults之key群:
(
PKEnableStockholmSettings,
INNextHearbeatDate,
MSVLoggingMasterSwitchEnabledKey,
AppleITunesStoreItemKinds,
AddingEmojiKeybordHandled,
com.apple.content-rating.ExplicitBooksAllowed,
com.apple.content-rating.MovieRating,
HasUserRegisteredFonts,
AppleLanguagesDidMigrate,
com.apple.content-rating.AppRating,
AppleLanguages,
NSLanguages,
NSInterfaceStyle,
com.apple.content-rating.ExplicitMusicPodcastsAllowed,
AppleKeyboardsExpanded,
AppleKeyboards,
PreferredLanguages,
AppleLocale,
com.apple.content-rating.TVShowRating
)
key前綴為PC或GG,就是我在此專案中儲存資料用的key喔~
原本在公司就是使用非常快速的WiFi,自己在開發測試的時候顯然沒有網路慢的問題,然而因為開發的app是要給米國人使用,此時就要考慮米國網路環境問題,據說,米國網路環境不如台灣好⋯⋯
iPhone的相機規格性能相當好,以iPhone 6為例,它有800萬畫素,寬高比為3×4或4×3,我們想要讓拍的相片的寬高比變為4×6或6×4,該怎麼做呢?
幾乎沒有在用UITableViewController的我卡住了,真不曉得為何一定要用UITableViewController?因為它限制太大,其實可以由UIViewController所取代。因為table view固定整個畫面,要設定其frame就不太容易,想要加上客製view也真是難⋯⋯
因為是拿他人寫好的專案來改,他用storyboard做好一切會員有關的頁面,前後流程都已經確定,甚至此頁面的class是繼承他自己定義好的基礎class,所以我才不會想要大費周章從UITableViewController搬到UIViewController!
時常用Xcode除錯的工程師都知道,Xcode對中文字還不是很友善,因為除錯時印出的內容,中文字都會變成以\U為開頭的編碼,如:
\U900d\U9059\U6587\U5de5\U4f5c\U5ba4
儘管知道這是中文字,但實在很難確認這行代表什麼字啊⋯⋯
好在總是有解決方案,我強者同事阿宅,找到解法更發揚光大,讓任何人只要引用自訂Category,之後在Xcode除錯平台上必能如實顯示中文字!
先前已經研究果Base64編碼的原理,現在以iOS來實作看看⋯⋯
/**
Theme: Base64 Encoding Decoding
IDE: Xcode 7
Language: Objective C
Date: 104/10/16
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
NSString *plainString = @"HappyMan";
// Encoding
NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainData base64EncodedStringWithOptions:0];
NSLog(@"%@", base64String); // SGFwcHlNYW4=
// Decoding
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
NSLog(@"%@", decodedString); // HappyMan
原來這麼簡單XD~
我以為是因為安裝最新的Xcode 7,才會讓Provision遺失,後來經資深工程師提點,才知道原來是Provision過期,所以要重新過期,所以要重新喚醒下載使用。再來又發現Certificate也要一起更新下載使用⋯⋯
No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings (“iOS Team Provisioning Profile: *”) were found.
Xcode can attempt to fix this issue. This will reset your code signing and provisioning settings to recommended values and resolve issues with signing identities and provisioning profiles.
HappyMan・迴響