2018年6月7日 星期四

iOS hot reloading

1. 安裝 InjectionIII 並啟動
2. 打開 XCode 和 專案
3. 在appDelegate加入

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.z
        #if DEBUG
        #if targetEnvironment(simulator)
        #if os(iOS)
        Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
        #elseif os(tvOS)
        Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()
        #endif
        #elseif os(macOS)
        Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
        #endif
        #endif
        return true
    }


PS.
已經秀出來的view並未改變。但是,新present出的view確實已經改變

如需要改變已秀出來的view,需在每個controller上實作
@objc func injected() {
    // 可馬上更新的code

}

建議的懶人法

    @objc func injected() {
        // 移除全部vc/view
        if self.childViewControllers.count > 0{
            let viewControllers:[UIViewController] = self.childViewControllers
            for viewContoller in viewControllers{
                viewContoller.willMove(toParentViewController: nil)
                viewContoller.view.removeFromSuperview()
                viewContoller.removeFromParentViewController()
            }
        }
        
        configureView()
    }
    
    func configureView() {
        
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        configureView()
    }

2018年3月18日 星期日

Redux特調

最近花了些時間,寫了一個redux的簡易範例,希望可以幫大家快速入門

原始碼

2017年12月14日 星期四

一直搞不懂bindActionCreators的應用原理,
花了一些時間研究,



參考資料

2017年10月11日 星期三

iOS簡繁互轉

UIAlertController客製化

根據🍎的文件
The UIAlertController class is intended to be used as-is and does not support subclassing. The view hierarchy for this class is private and must not be modified.

如果不想理他的話,就用以下的方法吧!

  1. 打開contentViewController的束縛
    @interface UIAlertController (ContentViewController)
    @property (nonatomic,retain) UIViewController * contentViewController;
    @end
  2. 呼喚神秘的contentViewController
    alertController.contentViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "contentViewController")
  3. 如果,使用tableview的話,記得加上
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
            
        // make UITableView fit to content's size
        self.preferredContentSize = self.tableView.contentSize

    }

code

2017年1月10日 星期二

iOS launch image的黑魔法

  1. 開一個新專案,在iPhone 7 size是 414x736

  2. 移除LaunchScreen.storyboard,在iPhone 7 size是 320x480

  3. 新增Default-568h@2x.png和Default-568h@3x.png到專案中(就算是 1x1的圖也沒關係,重點是檔名要正確),在iPhone 7 size是 320x58