發表文章

目前顯示的是 2017的文章

[Objective-C] 如何讓 iPhone 也能顯示出跟 iPad 一樣的 Popover 視窗

圖片
最近有人問我這支 App (空氣品質監測 https://goo.gl/gf2cBr),右上按鈕按下去後會跳出小視窗是如何做出來的,其實就是使用了 Popover視窗。


Popover 視窗主要用在螢幕較大的 iOS 裝置上,例如: iPad (下圖)。讓 iOS裝置透過 Popover 視窗可以讓資訊呈現以及操作介面看起來更精緻美觀。但是現在 iPhone 手機螢幕也做的越來越大,所以現在 iPhone 也可以使用 Popover 視窗囉。


步驟ㄧ:在 Storyboard 上放上 ViewController2,ViewController1 右上設置一個 UIButton,並拉線到 ViewController2。



步驟二:Action segue 選擇 Present As Popover。



步驟三:設定 ViewController2 要顯示的寬跟高。


步驟四:加上 UIPopoverPresentationControllerDelegate。

步驟五:使用 segue 方法跟 Delegate 裡的 adaptivePresentationStyleForPresentationController 方法,並加入以下程式碼。

完成: 運行後效果如下。


- > Sampe Code: https://www.dropbox.com/s/46px6acx0gzrh8w/iPhonePopover.zip?dl=0

Apple 的 App 審核人員將在 12/23~12/27 要放假囉

圖片
Apple 的 App 審核人員將在 12/23~12/27 要放假囉,App 還沒送審的還有要更新的,要趕緊這幾天送審囉。




[Objective-C] 解決點擊 UITextField 輸入框後被鍵盤升起擋住

圖片
有時候因為介面設計的關係,點擊 UITextField 輸入框後就會被升起來的鍵盤擋住。
最簡單的方法:1. 在 viewDidLoad 註冊兩個 NotificationCenter 來監控鍵盤升起來以及收起來。 UIKeyboardWillShowNotification 鍵盤將升起來。UIKeyboardWillHideNotification 鍵盤將收起來。

2.  鍵盤升起來的時候會執行 keyboardWillShow 方法。 keyboardFram:用 UIKeyboardFrameEndUserInfoKey 取得鍵盤的尺寸。keyboardHeight:取的鍵盤的高。keyboardDuration:用 UIKeyboardAnimationDurationUserInfoKey 取得鍵盤上升的動畫時間。使用 UIView 動畫,動畫時間帶入 keyboardDuration,並將 view 的 y 座標設定為負的鍵盤高度,這樣 view 就會跟著鍵盤升起來的時候也跟著往上提高。

3. 鍵盤收起來的時候會執行 keyboardWillHide 方法。 使用 UIView 動畫,動畫時間帶入 keyboardDuration,並將 view 的 y 座標設定 0

[Objective-C] 點擊 UITextFiled 後,收起鍵盤的二個常用方式

圖片
1. 第一個方式就是最常見到的點擊鍵盤 return 鍵盤就會收起來。
先加入 UITextFieldDelegate。 UITextField 設定 delegate。 使用 delegate 方法。

2. 第二個方法就是隨意點擊 view 任何地方鍵盤就會收起來。
在 view 加入點擊手勢 UITapGestureRecognizer。 點擊 view 任意地方就ㄏ呼叫 dimissKeyboard 方法。

-> 接下來可以繼續跟著這篇做:解決點擊 UITextField 輸入框後被鍵盤升起擋住
https://appotakuchung.blogspot.tw/2017/12/iosobjective-c-uitextfield.html



如何讓 APP 連線 HTTP 非加密的網路傳輸

圖片
Apple 在 iOS9之後對資訊安全這塊非常重視,在一般預設情況下必須使用HTTPS 具有加密傳輸的網路通訊方式,才可以連線到所指定的網址或主機。

如果您的 APP 目前還是只能連線到 HTTP 的網址或主機的話,只要在 info.plist 裡面加入 ATS (App Transport Security Settings) 設定就可以囉。


在 iOS9 後 Apple 建議設定:1. 在 info.plist 裡新增 ATS ->
2. 在 ATS 下添加 Allow Arbitrary Loads 設為 YES。




在 iOS 10 後 Apple 建議設定:1. 在 info.plist 裡新增 ATS -> 
2. 在 ATS 下添加 Exception Domains -> 
3. 添加 網域名稱 -> 
4. 添加設定:NSExceptionAllowsInsecureHTTPLoads 允許不安全連線,
NSIncludesSubdomains 網域名稱下的主機都允許連線。



[Swift] 將坐標系統 TWD97 (二度分帶) 轉成 WGS84 (經緯度)

圖片
最近在解析資料,遇到資料提供的座標為 TWD97 二度分帶座標,發現要轉成經緯度才有辦法使用在 iOS 的地圖上,所以花了點時間上網找公式才完成的,有需要用到的使用者可以把它寫成一個方法帶 X,Y 座標進去就可以使用囉。


註:如果您是用 Objective-C 語言就只要把 var 都改成 Double 就好了。

-> Sample Code:
https://www.dropbox.com/sh/wyce6lkjfsbo55d/AADnI0ONdCQxXwxd1wmZuMHKa?dl=0



Facebook 臉書輸入「你行的」會出現新特效

圖片
Facebook 臉書自從新增了「恭喜」動畫特效之後,現在不定期都會推出新的動畫特效,今天在 Facebook 臉書留言框或貼文輸入「你行的」,螢幕上就會出現 M 字型彈跳的「讚」圖示。還沒嘗試過的使用者趕快去試試看吧!



[Swift] 判斷多個條件同時成立,可用「 , 」取代「 && 」

圖片
使用 if 或 while 判斷多個條件有沒有同時成立時,通常都是用「 && 」,但是如果一次判斷很多組就會顯得非常的攏長,Swift 語言可以改用逗號「 , 」取代「 && 」囉(如下圖)。

Apple App Store 加速上架審查

圖片
開發者們有時候基於某些特殊原因需要縮短審查時間,只要填寫資料就可以加速上架審查,不過 Apple 審查機制裡面也有提到 Apple 並不保證能夠順利提早完成審查。


1. 首先到 https://developer.apple.com,登入 Apple Developer 帳號,點選上方列 Support。
2. 點選聯繫我們 Contact Us。

3. 點選應用程序審查 App Review。
4. 選擇請求加速的應用程序審查 request an expedited app review。

5. 填寫聯繫訊息,Name、Email、Organization 帶入的都是不可修改的基本資訊。使用者只要填入 Phone 電話號碼可以讓蘋果人員可以聯絡到您就可以了。

6. 填寫您的 App 名稱。
7. 填寫您的 Apple ID。( iTunes Connect 我的 App,選擇您要審查的 App,App 資訊裡)。
8. 您的 App 是多個可連動的組合,可以在這裡以 "," 分隔 Apple ID 一起填寫。可省略。
9. 選擇您 App 要上架的平台 (目前有 iOS、macOS、tvOS)。

10. 選擇您要加速審查的原因。 (目前有嚴重 Bugs 修復、有時間限制的活動、其他)
11. 說明您要加速審查的原因。
12. 送出。

iOS 11 UIRefreshControl 下拉更新後 navigationBar 不會回彈回去

圖片
最近在更新 iOS 11的新功能,發現 UIRefreshControl 下拉更新後,navigationBar 不會回彈回去。如下面影片。

我的解法如下: 1. 後來發現原來是我 Storyboard TableView 是自定義的所以問題出在 Constraint 上。


2. 把 TableView 的 Top Space Constraint 對應 Superview 0 頂端就可以囉。





[Objective-C] 改變手機最上方的狀態列 Status Bar 背景顏色

圖片
1. 手機系統默認的 Status Bar Style 字體樣式為黑色,背景顏色跟 View 所設定的背景顏色會是一樣的。


2. 想要改變 Status Bar 背景的顏色,可以加入下面的方法。

3. 在 viewDidLoad 呼叫方法並帶入顏色。


4. 成功!

改變手機最上方的狀態列 Status Bar 的樣式 (字體顏色)

圖片
1. 手機上方的狀態列 Status Bar Style 預設為 Default,顯示出來的字體是黑色樣式,在背景是白色或是比較淺的顏色都不會影響到使用者觀看。


2. 但是如果背景在比較深色的顏色或是黑色,狀態列上的網路訊號、時間、電池電量就會看不到了。



我的解法如下: 1. 在 Xcode -> TARGETS -> Deployment Info -> Status Bar Style 選擇 Light。
2. info.plist 裡新增 View controller-based status bar appearance,選擇 NO。


3. 重新開啟模擬器來看看,在黑色背景下也能清楚顯示出狀態列上的文字囉。


註:View controller-based status bar appearance,這句意思就是 Status Bar 的設定,是否由每個畫面的 ViewController 裡的程式碼來決定的,設 NO 的話,就只能從 TARGETS 裡勾選。

[Swift] 隱藏狀態列 Status Bar,或只隱藏指定畫面的狀態列 Status Bar

圖片
如何隱藏狀態列 Status Bar ? 1. 選擇 TARGETS -> General -> Deployment info -> ☑️ Hide status bar。


2. info.plist 裡新增 View controller-based status bar appearance,選擇 NO。

如何只隱藏指定畫面的狀態列 Status Bar ? 1. 對指定畫面的 ViewController,加上這個方法。

2. info.plist 裡新增 View controller-based status bar appearance,選擇 YES。

註:View controller-based status bar appearance,這句意思就是 Status Bar 的設定,是否由每個畫面的 ViewController 裡的程式碼來決定的,設 NO 的話,就只能從 TARGETS 裡勾選。
-> Objective-C 版本:https://appotakuchung.blogspot.tw/2017/11/iosobjective-c-status-bar-status-bar.html

[Objective-C] 隱藏狀態列 Status Bar,或只隱藏指定畫面的狀態列 Status Bar

圖片
如何隱藏狀態列 Status Bar ? 1. 選擇 TARGETS -> General -> Deployment info -> ☑️ Hide status bar。


2. info.plist 裡新增 View controller-based status bar appearance,選擇 NO。

如何只隱藏指定畫面的狀態列 Status Bar ? 1. 對指定畫面的 ViewController,加上這個方法。

2. info.plist 裡新增 View controller-based status bar appearance,選擇 YES。


註:View controller-based status bar appearance,這句意思就是 Status Bar 的設定,是否由每個畫面的 ViewController 裡的程式碼來決定的,設 NO 的話,就只能從 TARGETS 裡勾選。


-> Swift 版本:https://appotakuchung.blogspot.tw/2017/11/iosswift-status-bar-status-bar.html

iPhone 沒有收到「地震警報」跟「國家級警報」,如何開啟警報?

圖片
1. 到手機「設定」->「通知」,拉到最下面的「政府提示」,有個「警訊通知」跟「緊急警報」,開啟後就會收到警報通知囉。

2. 要在 4G 狀態下下才會出現警報通知,但也有4G的使用者卻沒收到,根據PTT版友爆料,似乎是廠商問題。




開舊專案 Autolayout Constraints 沒有 Safe Area 可以選擇?

圖片
今天更新完 Xcode 9,為了要在 iPhone X 顯示正常的 UI 位置,開起舊專案要更改 Storyboard 上的 UI Autolayout Constraints ,卻發現沒有新的 Safe Area 可以選擇⁉️

解決方法:只要把 Interface Builder Document 裡新的 Use Safe Area Layout Guides 打勾就會出現囉。





Apple Watch3 Cellular 為什麼台灣沒有賣?

Apple Watch3 Cellular 是目前最好的版本,由於台灣的電信業者受限於法規限制「一個門號一張 SIM 卡,同時在一個裝置上使用」。

現在只能等待電信法規修法了,以台灣主管單位一向走消極的態度處理法案,可能還有相當長的一段路要走。
來源:https://technews.tw/2017/09/13/taiwan-no-cellular-apple-watch-3/