Just My Life & My Work

Posts tagged ‘teach’

[iOS] 漸層色彩影像 (Gradient Color Image)

近年來App流行漸層色彩影像 (Gradient Color Image),我們不想要美術師出圖,因為有很多螢幕尺寸要考量,所以想由程式碼來個別生成。

漸層色彩影像 Gradient Color Image

結果圖上有三個Image View,上圖為單純藍色,左下為水平漸層黑色alpha值由1到0,右下為垂直漸層黑色alpha值由1到0。

我將所需要的程式碼檔案放在GitHub GistGradient Color Image

[iOS][Swift] 在Swift專案使用Objective C類別

該是好好學習Swift 2.0的時候囉~上週Apple才宣布Swift開源化!趁著棘手的專案告一段落,我要利用時間學習iOS新的開發語言,讓公司的戰力可以延續下去。

首先我們會遇到,以Swift為主的專案想使用Objective C的類別,因為我們可能沒啥時間去重刻,於是想要Objective C直接轉生為Swift來使用。

Swift using Objective C class

在此我們建立一個Swift專案名為HappyTest8,接著新增Cocoa Touch Class語言為Objective C,並名為HTMainViewController。

(繼續閱讀…)

[iOS] 刪除 User Defaults

很多時候我們會把資料儲存在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喔~

參考:Delete all keys from a NSUserDefaults dictionary iPhone

[iOS] 掃描QR Code和Bar Code

我以為還要去找第三方套件來用,一查網路才發現,從iOS 7開始,SDK已經內建有掃描條碼的API,我想會把這功能納入麾下是必然的,因為在生活中條碼無所不在,除了常見的用途如辨識商品(書籍、食品、識別證等)外,還能做非常有趣的應用(導覽、遊戲等)。

iOS 掃描QR Code和Bar Code

猜猜看可以掃到什麼?

現在就來學一下怎麼掃描QR Code和Bar Code吧!

(繼續閱讀…)

[iOS] 開發時設定網路速度

原本在公司就是使用非常快速的WiFi,自己在開發測試的時候顯然沒有網路慢的問題,然而因為開發的app是要給米國人使用,此時就要考慮米國網路環境問題,據說,米國網路環境不如台灣好⋯⋯

developer network2

(繼續閱讀…)

[iOS] 將影像截取為4×6或6×4

iPhone的相機規格性能相當好,以iPhone 6為例,它有800萬畫素,寬高比為3×4或4×3,我們想要讓拍的相片的寬高比變為4×6或6×4,該怎麼做呢?

crop image

對照圖

(繼續閱讀…)

[iOS] UITableViewController加上客製視圖

幾乎沒有在用UITableViewController的我卡住了,真不曉得為何一定要用UITableViewController?因為它限制太大,其實可以由UIViewController所取代。因為table view固定整個畫面,要設定其frame就不太容易,想要加上客製view也真是難⋯⋯

table view controller add subview - before

因為是拿他人寫好的專案來改,他用storyboard做好一切會員有關的頁面,前後流程都已經確定,甚至此頁面的class是繼承他自己定義好的基礎class,所以我才不會想要大費周章從UITableViewController搬到UIViewController!

(繼續閱讀…)

[Xcode][iOS] 除錯平台印出中文字

時常用Xcode除錯的工程師都知道,Xcode對中文字還不是很友善,因為除錯時印出的內容,中文字都會變成以\U為開頭的編碼,如:

\U900d\U9059\U6587\U5de5\U4f5c\U5ba4

儘管知道這是中文字,但實在很難確認這行代表什麼字啊⋯⋯

好在總是有解決方案,我強者同事阿宅,找到解法更發揚光大,讓任何人只要引用自訂Category,之後在Xcode除錯平台上必能如實顯示中文字!

(繼續閱讀…)

[iOS] Base64 編碼解碼 (Base64 Encoding Decoding)

先前已經研究果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~

Base64 chart Base64 Man Base64 HappyMan

參考:Base64 Decoding in iOS 7+

[iOS] Code Signing 問題

我以為是因為安裝最新的Xcode 7,才會讓Provision遺失,後來經資深工程師提點,才知道原來是Provision過期,所以要重新過期,所以要重新喚醒下載使用。再來又發現Certificate也要一起更新下載使用⋯⋯

Provision deadline

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.

(繼續閱讀…)

標籤雲