Just My Life & My Work

Archive for the ‘教學’ Category

[iOS] 強制旋轉特定畫面 (Force to Rotate Portrait)

播放影片時特定畫面橫向文章提到播放影片時要橫向,那麼在播放完影片後,想要回復到直向可以怎麼做?

[iOS] 播放影片時特定畫面橫向

原來只要一行程式碼就能搞定!

/**
 Theme: Force to Rotate Portrait
 IDE: Xcode 9
 Language: Objective C
 Date: 107/01/02
 Author: HappyMan
 Blog: https://cg2010studio.com/
 */

[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrait) forKey:@"orientation"];

注意字串orientation

可使用方向的列舉:

typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {

    UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown,

    UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,

    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,

    UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,

    UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft

} __TVOS_PROHIBITED;

參考:How to force view controller orientation in iOS 8?

[iOS] 使用 Facebook SDK

現在有非常多應用程式都會加入Facebook相關的功能,來登入服務分享訊息等。而在使用Facebook功能前,我們必須先下載 Facebook SDK 及在 iOS 上設定。

下圖是我成功使用 Facebook SDK後,在App Dashboard上看到的結果,我使用兩支手機和兩個臉帳號登入,可立即在Real Time上看到兩人上線。

[iOS] 使用 Facebook SDK.png

(繼續閱讀…)

[iOS] 播放影片時特定畫面橫向

我使用第三方套件XCDYouTubeKit,就可以透過內建的MPMoviePlayerViewController來播放影片,那麼想要在特定的畫面橫向怎麼實現?因為整個App專案設定只有Portrait,也就是直向,只有在播放影片時要變成可以Landscape,就是橫向。

[iOS] 播放影片時特定畫面橫向.jpg

先前寫了篇文章:在WebView播放Youtube影片旋轉,確實可以做到。不過iOS 9之後又有稍微變化,只好改寫它囉~

(繼續閱讀…)

[iOS] App 預設語言 (App Default Language)

我App中有三個Localization,分別是:

  • 繁體中文
  • 簡體中文
  • 英文

使用者可以在這三個隨意切換,來顯示他想要的語言介面。

三年前已有實現過多國語言化的預設語言 (Default (Fallback) Language of Localization),不過那篇文章我是有寫code,這次只要調整專案中的Info.plist即可!

[iOS] App預設語言.PNG

調整過後,我切換到日語(SIM字眼旁是日文),App介面語言是英文喔~

(繼續閱讀…)

比對檔案內容 (Compare File Content)

最近客戶的SDK更新版本,那要怎麼融入我已修改過檔案?這時候就要使用比對檔案內容 (Compare File Content)平台,現在已經有很多線上免費工具,所以挑一個來使用即可!方式有兩種:

  1. 複製貼上檔案內容
  2. 上傳檔案

比對檔案內容 (Compare File Content).png

比起開啟兩個檔案,只有純文字介面來尋找有效率多啦~

話說,我個人不是很喜歡修修改改已經寫好的功能,這次的經驗是,直接使用人家寫好的class,再來加入自己的功能。若能輕易看懂對方寫什麼,我就會開心點~

參考:Diff Checker – Online diff tool to compare text to find the differenceDiffNow – Compare files online. Powered by ExamDiff Pro

[iOS] iPhone Point and Pixel

隨著iOS 11的來臨,Apple發表最新一代的手機iPhone X,它的螢幕大小是iPhone有史以來最大5.8吋,所以在設計UI/UX上就要有所調整。過去的幾個螢幕大小:

  • 3.5吋
  • 4吋
  • 4.7吋
  • 5.5吋

已不成問題,因為從2014年末開始至今三年的時間,發表iPhone的機種螢幕大小是4.7吋和5.5吋,這讓設計師開發者都已習慣。

Design-Resolutions Points and Pixels

(繼續閱讀…)

[iOS] 移除所有子視圖 (Remove All Subviews)

有時候必須要移除所有子視圖 (Remove All Subviews),再來產生新的子視圖,除了可以回復原始狀態外,管理起來也挺方便的!

Remove All Subviews.PNG

(繼續閱讀…)

[iOS] 單例 (Singleton)

單例 (Singleton) 或稱單一實體,也就是程式運行時,此Class永遠只有一個實體。

Singleton.png

原本生成一個實體寫法:

HappyClass *class = [[HappyClass alloc] init];

程式每次執行到此,都會重新生成一個實體。若有多重執行緒,很有可能不小心生成多個實體;或是操作流程多變,也是可能會生成多個實體。

(繼續閱讀…)

[iOS] 呼叫Web Service除錯

今天來講一下簡單的問題,不知道要怎麼稱呼這一篇,就姑且叫呼叫Web Service除錯吧~

其實就是串API時所發現的奇異問題!使用PostmanChrome呼叫都很成功回傳我要的資料,卻在寫進iOS中卻得到不預期的結果,先前有提到過Basic Authentication,程式傳遞token後,回傳結果表示沒有傳遞token給server,明明就是照先前的code複製貼上修改API Function名稱,這次居然有問題讓我很納悶。

人不是萬能,總得要投降來找救兵,以便跳出框框,看見問題的癥結。還是找我們寫後台的資深工程師幫忙查看,搞了兩小時多,Function名稱換掉也一樣,最後資深工程師發現,原來URL不小心多打一個「/」~

錯:
http://happystudio.notebook.com:5000/api/ecg/?start_date=2017-10-18&end_date=2017-11-17

對:
http://happystudio.notebook.com:5000/api/ecg?start_date=2017-10-18&end_date=2017-11-17

原因:?前多一個/

那為何Postman或Chrome測試沒有問題?因為這兩個工具會自動把沒有「/」,變成有「/」,來符合後台的API格式,然而iOS SDK就沒做這個容錯處理。這要歸類成相容性問題嗎?其實複製URL貼上到Chrome測試,我就有發現網址會跳成有「/」。

花了點時間,算是幫後台debug啦~

[iOS] 讀取影像中QRCode

過去嘗試過用相機掃描QRCode,現在想要讀取影像中QRCode,可以怎麼做呢?

iOS 讀取影像中QRCode.PNG

若有使用心動健康(名字暫定)的朋友,可以加我好友喔:)~

(繼續閱讀…)

標籤雲