工程組件
UI相關(guān)
- 用純代碼設(shè)置控件約束的時(shí)候,需要先將控件添加進(jìn)視圖層次中(addSubView)再設(shè)置約束,否則會(huì)無效或崩潰。尤其是用SnapKit和Masonry的時(shí)候要注意
- WKWebView的一些問題
- iOS9:IB上exit實(shí)現(xiàn)unwindSegue
- 設(shè)置讓app不鎖屏不黑屏
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
- iOS10中UITextField的左側(cè)默認(rèn)頂格了。想要左側(cè)留白可直接改屬性
private func addLeftWhiteView(aTextField: UITextField)
{
let leftV = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: currentPasswordTF.bounds.size.height))
leftV.backgroundColor = UIColor.whiteColor()
aTextField.leftView = leftV
aTextField.leftViewMode = .Always
}
-
model小窗口的效果用sb實(shí)現(xiàn)
model小窗口的效果用sb實(shí)現(xiàn)
swift
- swfit-內(nèi)存管理,WEAK 和 UNOWNED - 實(shí)際使用中weak就好
- 可選鏈只要有一個(gè)?最后打印出來都是帶Optional的。想要去掉Optional可以使用if let 或者 ?? ,當(dāng)然強(qiáng)解包 ! 也可以,只是不夠安全
- swift對(duì)異常的處理
do
{
try NSFileManager.defaultManager().removeItemAtURL(NSURL(fileURLWithPath: aLocalPath))
}
catch let error as NSError
{
print(error.description)
}
-
swift中struct重寫init方法會(huì)覆蓋原有的init,就不能直接stuct()這樣創(chuàng)建對(duì)象了,只能使用自定義的??梢詫懸粋€(gè)空的init()方法來同時(shí)保留兩者。
實(shí)用場(chǎng)景是viewModel可以用viewModel = struct()這樣來直接聲明,可以不用可選項(xiàng)。這樣給viewModel的屬性賦值仍然可以調(diào)用viewModel本身的didSet方法
自定義 和 空的init()方法可以同時(shí)保留兩種創(chuàng)建方法 - swift中的compare比較相當(dāng)強(qiáng)大,各種類型都可以
func isSelectedIndex(index: NSIndexPath) -> Bool
{
return mSelectedIndex?.compare(index) == .OrderedSame
}
- 數(shù)組有方法contains方法用來辨識(shí)是否有某元素
guard !tagIDArray.contains(tagID) else { return }
功能
- 倒計(jì)時(shí)
/// 計(jì)時(shí)器
var timer: NSTimer?
/// 倒計(jì)時(shí)時(shí)長
var currentTime = 60
func makeTimer()
{
timer = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: #selector(HHFindPasswordViewController.getNewTime), userInfo: nil, repeats: true)
}
- 獲取版本號(hào)和build號(hào)
var versionStr = String()
// 版本號(hào)
guard let mainVersion: String = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as? String else { return }
versionStr = versionStr + mainVersion
// build號(hào)
guard let buildVersion: String = NSBundle.mainBundle().objectForInfoDictionaryKey(kCFBundleVersionKey as String) as? String else { return }
versionStr = versionStr + " build " + buildVersion
- 清除字符串兩端的空白符
private func isValidStr(aStr: String?) -> Bool
{
guard let aString = aStr else { return false }
let tempStr = aString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
return tempStr.isEmpty ? false : true
}
- 判斷app的網(wǎng)絡(luò)設(shè)置權(quán)限
private func isRestrictedNet() -> Bool
{
let cellularData = CTCellularData()
var isRes = false
cellularData.cellularDataRestrictionDidUpdateNotifier = { [weak self] state in
switch state
{
case .Restricted:
self?.alertNetSetting()
isRes = true
case .NotRestricted: fallthrough
case .RestrictedStateUnknown: isRes = false
}
}
return isRes
}

