spiegel-keyman/ios/engine/KMEI/KeymanEngine/Classes/LanguagePicker/KeyboardPickerButton.swift

63 lines
1.8 KiB
Swift

//
// KeyboardPickerButton.swift
// KeymanEngine
//
// Created by Gabriel Wong on 2017-09-12.
// Copyright © 2017 SIL International. All rights reserved.
//
import UIKit
import QuartzCore
public class KeyboardPickerButton: UIButton {
weak var presentingVC: UIViewController?
public init(presentingVC: UIViewController) {
super.init(frame: .zero)
self.presentingVC = presentingVC
layer.cornerRadius = 8.0
clipsToBounds = true
setColor(UIColor(red: 0.62, green: 0.68, blue: 0.76, alpha: 1.0))
addTarget(self, action: #selector(self.displayKeyboardPicker), for: .touchUpInside)
setImage(UIImage(named: "keyboard_icon", in: Resources.bundle, compatibleWith: nil), for: .normal)
sizeToFit()
frame = frame.insetBy(dx: -15.0, dy: -3.0)
}
public required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
presentingVC = nil
}
@objc func displayKeyboardPicker() {
if let presentingVC = presentingVC {
Manager.shared.showKeyboardPicker(in: presentingVC, shouldAddKeyboard: false)
}
}
// Clear images if the developer sets a title
public override func setTitle(_ title: String?, for state: UIControl.State) {
setImage(nil, for: state)
super.setTitle(title, for: state)
}
func setColor(_ color: UIColor) {
let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
UIGraphicsBeginImageContext(rect.size)
guard let context = UIGraphicsGetCurrentContext() else {
return
}
UIGraphicsPushContext(context)
context.setFillColor(color.cgColor)
context.fill(rect)
let bgImg = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsPopContext()
UIGraphicsEndImageContext()
setBackgroundImage(bgImg, for: .normal)
}
}