2016年4月28日 星期四

為你的iOS專案加入新字型


  1. 把字型檔拉進你的project中(只能用.ttf或.otf的檔案)
  2. 去info.plist加入Fonts provided by application,把新增的檔名加入item0的string(若有下一個檔案就加到item1的string)。
  3. print("\(UIFont.familyNames())")看看你新增的字型有沒有被加進去。
  4. 最後去print("\(UIFont.fontNamesForFamilyName("Noto Sans CJK TC"))")看看你加入的family裡面有那些字型你可以用。self.titleLabel.font = UIFont(name: "NotoSansCJKtc-Bold", size: 20)

p.s. 可以用appearance把這些font都變成預設值。
struct Theme {
    static func setDefaultFont() {
        UILabel.appearance().font = UIFont(name: "NotoSansCJKtc-Regular", size: 17)
        UITextField.appearance().font = UIFont(name: "NotoSansCJKtc-Regular", size: 17)
        UITextView.appearance().font = UIFont(name: "NotoSansCJKtc-Regular", size: 17)
    }
}

2016年4月26日 星期二

自動調整ScrollView讓textField適應鍵盤高度

直接把我的code貼上來,重點是不要改變scrollView.contentSize,因為auto layout時會自動設定。
----------------------------------------------------------------
//
//  BaseScrollViewController.swift
//  BaseSettings
//
//  Created by HarveyHu on 4/26/16.
//  Copyright © 2016 HarveyHu. All rights reserved.
//

import UIKit
import SnapKit
import RxSwift

class BaseScrollViewController: UIViewController {
    let contentView = UIView()
    let scrollView = UIScrollView()

    var originalContentInsets = UIEdgeInsetsZero
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setUI()
    }
    override func viewDidAppear(animated: Bool) {
        super.viewWillAppear(animated)
        originalContentInsets = scrollView.contentInset
    }
    
    override func setUI() {
        super.setUI()
        self.scrollView.addSubview(contentView)
        self.view.addSubview(scrollView)
        
    }
    
    override func setUIConstraints() {
        super.setUIConstraints()
        
        scrollView.snp_makeConstraints { (make) in
            make.top.equalTo(self.view)
            make.bottom.equalTo(self.view)
            make.leading.equalTo(self.view)
            make.trailing.equalTo(self.view)
        }


        contentView.snp_updateConstraints { (make) in
            make.top.equalTo(self.scrollView)
            make.leading.equalTo(self.scrollView)
            make.trailing.equalTo(self.scrollView)
            make.bottom.equalTo(self.scrollView)

        }
    }
    
    // MARK: - Keyboard
    @objc override func keyboardWasShown(aNotification: NSNotification)
    {
        guard let info = aNotification.userInfo, kbSize = info[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue().size else {
            return
        }
        
        let contentInsets = UIEdgeInsetsMake(originalContentInsets.top, originalContentInsets.left, kbSize.height, originalContentInsets.right)
        self.scrollView.contentInset = contentInsets
        self.scrollView.scrollIndicatorInsets = contentInsets
    }
    
    @objc override func keyboardWillBeHidden(aNotification: NSNotification)
    {
        let contentInsets = originalContentInsets
        self.scrollView.contentInset = contentInsets
        self.scrollView.scrollIndicatorInsets = contentInsets
    }

}
------------------------------------------------------------------
要用的時候就繼承這個VC,把所有內容放到contentView上,但在contentView的constraints設定上要注意寛度可以固定,但高度不要寫死,要跟著內容高度而定。
contentView.snp_updateConstraints { (make) in
            make.width.equalTo(self.view)
            make.bottom.equalTo(self.theMostBottomView).offset(10)

        }

2016年4月21日 星期四

切換xcode預設路徑到不同位置

OSX有提供一個方便的指令
xcode-select -p 印出目前設定的路徑
xcode-select -s /yourXcodePath/Developer 設定路徑
xcode-select -r 重設回預設的路徑(/Applications/Xcode.app/Contents/Developer)