目前分類:iOS (200)

瀏覽方式: 標題列表 簡短摘要

 

小賢 發表在 痞客邦 留言(0) 人氣()

import UIKit

 

小賢 發表在 痞客邦 留言(0) 人氣()

只跑一次的Globa function:

/// Run once after delay if no be called
///
/// - Parameters:
///   - delay: delay time
///   - saveCurrent: should put it to 'property scope'
///   - getCurrent: should pass 'weak' self property
///   - once: do once closure
func runOnce(delay: TimeInterval,
                saveCurrent: inout DispatchTime?,
                getCurrent: @autoclosure @escaping () -> DispatchTime?,
                once: @escaping () -> Void)
{
    let begin: DispatchTime = DispatchTime.now()
    saveCurrent = begin
    
    DispatchQueue.main.asyncAfter(deadline: begin + delay) {
        
        guard let current = getCurrent(), current == begin else {
            print("Ignore because still be called")
            return
        }
        
        print("Run once")
        once()
    }
}

 

Caller端用法:

小賢 發表在 痞客邦 留言(0) 人氣()

protocol OrderPickUpViewModelFactoryProtocol {
    
}

extension OrderPickUpViewModelFactoryProtocol {
    
    fileprivate typealias TResult = OrderPickUpCellViewModelUpProtocol
    
    fileprivate func createRows(info: OrderDetailModel.ShuttleInfo, _: TDesc.Type, _: TLocation.Type, _: TSubDetail.Type, _: TTitle.Type) -> [TResult]
        where TDesc: OrderPickUpDetailDescCellViewModelProtocol,
        TLocation: OrderPickUpDetaiLocationCellViewModelProtocol,
        TSubDetail: OrderPickUpDetailSubDetailCellViewModelProtocol,
        TTitle: OrderPickUpDetailTitleCellViewModelProtocol
    {
        
        var rows: [TResult?] = []
        
        rows.append(TTitle(titleText: "AAA")))
        rows.append(TLocation(titleText: "BBB"))
        // .....        

        return rows.dropNil
    }
}

1.在工廠extension 內預設實作商業邏輯

 

小賢 發表在 痞客邦 留言(0) 人氣()

Label 設定AttributedText後,需重新指定LineBreakMode

titleLabel.attributedText = NSMutableAttributedString(string: viewModel.model.title, attributes: titleAttributes)

小賢 發表在 痞客邦 留言(0) 人氣()

在unit test 裡面會發現compile 會出現 Failled to import bridging header

小賢 發表在 痞客邦 留言(0) 人氣()

iOS 9之後有新的方式可以改status bar
https://www.jianshu.com/p/9f7f3fa624e7

小賢 發表在 痞客邦 留言(0) 人氣()

expr {{變數}} = {{想改的值}}

小賢 發表在 痞客邦 留言(0) 人氣()

 

var str = "Hello, playground+"
var allowCharactoers = CharacterSet.urlQueryAllowed
allowCharactoers.remove(Unicode.Scalar("+"))

print(str.addingPercentEncoding(withAllowedCharacters: allowCharactoers))

 

小賢 發表在 痞客邦 留言(0) 人氣()

參考資料:

小賢 發表在 痞客邦 留言(0) 人氣()

在Xcode 9.2 升級到9.3的時候,模擬器可正常Build,但在實機上面發生了Compile error: abort trap: 6,弄了很久,最後把compile 不過的code包成 function就行了


小賢 發表在 痞客邦 留言(0) 人氣()

想正確取得 button.titleLabel?.frame ,在設定完text後,需用button.setNeedsLayout()及button.layoutIfNeeded()

 

小賢 發表在 痞客邦 留言(0) 人氣()

自己SubClass UIView,然後再對layer做Gradient

 

小賢 發表在 痞客邦 留言(0) 人氣()

清 UIWebView, WKWebView, SafariViewController cookie 相關的解法的好文章

https://github.com/OAuthSwift/OAuthSwift/wiki/Logout

小賢 發表在 痞客邦 留言(0) 人氣()

將 weak 拿掉(變成strong ) 就行了@@

 

小賢 發表在 痞客邦 留言(0) 人氣()

 

小賢 發表在 痞客邦 留言(0) 人氣()

defaults write com.apple.dt.Xcode BuildSystemScheduleInherentlyParallelCommandsExclusively -bool NO

 

小賢 發表在 痞客邦 留言(0) 人氣()

使用 UITableViewHeaderFooterView ,而非 UITableViewCell來做 Header Section 就能解決這個問題....

 

小賢 發表在 痞客邦 留言(0) 人氣()


小賢 發表在 痞客邦 留言(0) 人氣()

View (設陰影)

   View (設圓角, maskToBound, clipToBound )

小賢 發表在 痞客邦 留言(0) 人氣()