Time of Update: 2017-01-13
前面的幾篇文章講解了自動布局庫SnapKit的使用方法。本文通過一個完整的範例(登入頁面)來示範在實際項目中如何使用SnapKit來實現自動化布局的。1,效果圖如下2,代碼講解(1)使用者名稱、密碼輸入地區(白色地區)設定垂直置中約束,其高度是固定90,寬度自適應(距離螢幕左右側都為15像素)(2)使用者名稱、密碼輸入框之間分割線是使用灰色背景的UIView實現,其高度是1像素,同樣設定垂直置中約束。(3)登入按鈕距離上方輸入地區20像素,高度固定是40,寬度同樣自適應(距離螢幕左右側都為15像
Time of Update: 2017-01-13
1,約束優先順序我們使用SnapKit的時候,還可以定義約束的優先順序。這樣當約束出現衝突的時候,優先順序高的約束覆蓋優先順序低的約束。具體優先順序可以放在約束鏈的結束處。(1)可以設定如下幾種優先順序priorityLow():設定低優先順序,優先順序為250priorityMedium():設定中優先順序,優先順序為500(這個也就是預設的優先順序)priorityHigh():設定高優先順序,優先順序為750priority():可以設定任意的優先順序,接受的參數是0-1000的數字。比如
Time of Update: 2017-01-13
在之前的文章中我介紹了如何使用SnapKit的 snp_makeConstraints 方法進行各種約束的設定。但有時我們的頁面並不是一直固定不變的,這就需要修改已經存在的約束。本文介紹如何更新、移除、代替現有的約束。1,刪除約束要實現對現有的約束進行更新或者移除,我們需要先將約束的結果賦值給一個局部變數或一個類屬性,然後對這個約束的引用進行操作。比如下面範例:開始時我們給橙色方塊添加了個距螢幕上方40像素的約束,點擊按鈕後使用 uninstall() 方法把這個約束給移除。import
Time of Update: 2017-01-13
我們知道多行文字框(UITextView)具有URL檢測功能,將其開啟後,它會高亮顯示內容中的url連結文字,點擊後會使用safari開啟這個連結。 1,讓textView支援自訂連結除了能夠用瀏覽器開啟url連結外,有時我們還想讓內容中的連結能實現一些個人化的功能需求。比如:點擊“查看詳細說明”後,APP會跳轉到功能說明頁面。而點擊“問題反饋”連結時,又會到進行問題反饋操作。
Time of Update: 2017-01-13
應網友要求,我這裡總結了下 as、as!、as? 這三種類型轉換操作符的異同,以及各自的使用情境。1,as使用場合(1)從衍生類別轉換為基類,向上轉型(upcasts)class Animal {}class Cat: Animal {}let cat = Cat()let animal = cat as Animal(2)消除二義性,數實值型別轉換let num1 = 42 as CGFloatlet num2 = 42 as Intlet num3 = 42.5 as Intlet num4
Time of Update: 2017-01-13
項目中常常會使用 UINavigationController 對各個頁面進行導航,導覽列左側的返回按鈕預設標題文字是上級頁面的 title。但如果子頁面的標題(title)文字過長,那麼返回按鈕的文字就會消失: 同樣地,即使在父頁面中將 navigationItem.backBarButtonItem 設為自訂的 UIBarButtonItem,修改返回按鈕的文字: 如果子頁面的標題文字過長,返回按鈕的文字也是就會
Time of Update: 2017-01-13
UITextField、UITextView組件系統原生就支援文字的複製,但有時我們需要讓其他的一些組件也能實現複製功能,比如點擊複製UILabel上的文字、UIImageView中的圖片、UITableView裡儲存格的內容、或者點擊按鈕把文字或圖片自動複製到粘貼板中等等。這些我們藉助 UIPasteboard 就可以實現。一,將內容寫入到剪貼簿中1,複製字串UIPasteboard.generalPasteboard().string = "歡迎訪問
Time of Update: 2017-01-13
現在很多APP或者網站都支援使用QQ帳號進行登入。本文示範如何?QQ的第三方登入,以及登入後的擷取使用者的個人資訊。 1,騰訊開放平台註冊,以及SDK的配置(這個可以官方去找)2,登入授權,並擷取使用者資料資訊(1)點擊“登入並擷取使用者資料”按鈕(2)程式會自動跳轉到QQ,顯示登入頁面(頁面上會顯示需要的授權)(3)登入成功後又會自動返回原來的APP。本範例中我們在登入成功後,擷取使用者資訊並列印出來附:返回參數說明
Time of Update: 2017-01-13
月小升曾經使用介面來進行自適應,作為沒有經過系統化xcode訓練的人來說,太麻煩了。還是代碼來得直接。直接計算螢幕的寬度,就可以設定元件的大小了。 代碼如下複製代碼 //// ViewController.swift// kids//// Created by on 15/9/4.// Copyright (c) 2015年 Acrowdkids. All rights
Time of Update: 2017-01-13
Swift 中的錯誤處理從 O-C 沿襲而來,但 Swift 1.0 之後逐漸發生了巨大改變。重要的改變發生在 Swift 2,它率先使用了“處理非異常的狀態和條件”的做法,使你的 app 變得更加簡單。類似於其它程式設計語言,在 Swift 中,選擇使用哪種錯誤處理技術,需要根據具體的錯誤類型和 app 整體架構而定。本教程將示範一個“魔法”,在這個例子中,不但有男巫、女巫和蝙蝠,還有蟾蜍,以此來示範在常見錯誤處理過程中的最佳實務。你還可以看到,
Time of Update: 2017-01-13
以下代碼未完全實現多選功能,僅僅為中間過程,作為自己複習使用。因為經過最佳化的代碼,最終會忘記中間的過程。讀取本地圖片,然後列出,然後可以多選,可以取消選擇//// ViewController.swift// imageTest//// Created by on 15/11/30.// Copyright (c) 2015年 JS. All rights reserved.// import UIKitimport
Time of Update: 2017-01-13
代碼如下複製代碼 //// ViewController.swift// Tanchu//// Created by 房允麒 on 15/12/1.// Copyright (c) 2015年 JS. All rights reserved.// import UIKit class ViewController: UIViewController { var alert1:
Time of Update: 2017-01-13
swift載入瀏覽器頁面上拉個控制項 @IBOutlet weak var web: UIWebView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after
Time of Update: 2017-01-13
使用 navigationItem.leftBarButtonItem 和 navigationItem.rightBarButtonItem 可以很方便的分別設定導覽列左側和右側按鈕,但一側只能有一個按鈕。如果想要在一側使用多個按鈕,可以通過 leftBarButtonItems 和 rightBarButtonItems 來實現。 下面示範給導覽列右側添加兩個按鈕(搜尋和設定):同時兩個按鈕
Time of Update: 2017-01-13
在之前的小視頻錄製文章中,我們使用 AVAssetExportSession 將合并後的視頻壓縮輸出成一個最終的視頻檔案。當時使用的是高品質的壓縮(AVAssetExportPresetHighestQuality)。let exporter = AVAssetExportSession(asset:
Time of Update: 2017-01-13
我們使用搜尋欄(UISearchBar)時,如果將其設定為“Shows Cancel Button”後,輸入框右側會有個取消按鈕(標題文字是Cancel)。有時我們想要將這個按鈕修改成其他文字,比如“搜尋”。雖然 searchBar 不提供直接修改這個按鈕文字的方法或屬性,但我們可以換種方式來實現。1,修改searchBar取消按鈕的文字先擷取到 searchBar 中的取消按鈕,再設定這個按鈕的 title 即可。import
Time of Update: 2017-01-13
在Swift中,如果需要把一個字串根據特定的分隔字元拆分(split)成字串數組,通常有如下兩種方法:1,使用componentsSeparatedByString()方法let str = "北京、上海、深圳、香港"print("原始字串:\(str)") let splitedArray =
Time of Update: 2017-01-13
使用SnapKit布局時,如何?鍵盤跟隨?之前的文章中,我們頁面使用的是 Constraints 約束布局。如果頁面元素是使用 SnapKit 這個第三方布局庫來布局的話,也是可以實現鍵盤的跟隨上移效果。實現方式同樣是監聽鍵盤通知,然後改變下約束,從而實現上移動畫效果。效果圖如下:代碼如下:import UIKitimport SnapKit class ViewController: UIViewController { &
Time of Update: 2017-01-13
delegateCocoa 開發中介面-委託 (protocol-delegate) 模式是一種常用的設計模式,它貫穿於整個 Cocoa 架構中,為代碼之間的關係清理和解耦合做出了不可磨滅的貢獻。在 ARC 中,對於一般的 delegate,我們會在聲明中將其指定為 weak,在這個 delegate 實際的對象被釋放的時候,會被重設回 nil。這可以保證即使 delegate 已經不存在時,我們也不會由於訪問到已被回收的記憶體而導致崩潰。ARC 的這個特性杜絕了 Cocoa
Time of Update: 2017-01-13
1,得到當前月第一天、最後一天日期//本月開始日期func startOfCurrentMonth() -> NSDate { let date = NSDate() let calendar = NSCalendar.currentCalendar() let components = calendar.components([.Year, .Month], fromDate: