Need job

Looking for job in Europe. Please contact thru LinkedIn profile.

Showing posts with label Swift. Show all posts
Showing posts with label Swift. Show all posts

Wednesday, November 29, 2017

Text kern/letter spacing in Xcode Interface builder

Sometimes designers uses different kern, not default.
How to change it with minimal time?
Add inspectable text attribute.

Here is ready-to-use code for UIButton.
Very easy transformable to UILabel.

extension UIButton {

    @IBInspectable
    var letterSpace: CGFloat {
        set {
            let attributedString: NSMutableAttributedString!
            if let currentAttrString = attributedTitle(for: .normal) {
                attributedString = NSMutableAttributedString(attributedString: currentAttrString)
            }
            else {
                attributedString = NSMutableAttributedString(string: self.titleLabel?.text ?? "")
                setTitle(.none, for: .normal)
            }

            attributedString.addAttribute(NSKernAttributeName,
                                           value: newValue,
                                           range: NSRange(location: 0, length: attributedString.length))

            setAttributedTitle(attributedString, for: .normal)
        }

        get {
            if let currentLetterSpace = attributedTitle(for: .normal)?.attribute(NSKernAttributeName, at: 0, effectiveRange: .none) as? CGFloat {
                return currentLetterSpace
            }
            else {
                return 0
            }
        }
    }
}

Thursday, February 9, 2017

Swift weak delegate

When you need to declare weak delegate property you may caught " 'weak' may only be applied to class and class-bound protocol types, not 'SwipePickerDelegate'".


Apple mentioned this in docs here:
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-ID281

So, all you need is add "class" keyword to protocol.


Tuesday, January 31, 2017

Couldn't create mapping policy for class named () - Core Data migration error

Its easy to fix it.
One of possible reasons is Policy class name w/o namespace.
On the image below a PRODUCT_MODULE_NAME mentioned with red.


If you don't now the name, here is the trick to find out.