You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.6 KiB
88 lines
2.6 KiB
//
|
|
// SSBadgeButton.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by FMI-12 on 3/27/18.
|
|
// Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
class SSBadgeButton: UIButton {
|
|
|
|
var badgeLabel = UILabel()
|
|
|
|
var badge: String? {
|
|
didSet {
|
|
addBadgeToButon(badge: badge)
|
|
}
|
|
}
|
|
|
|
public var badgeBackgroundColor = UIColor.red {
|
|
didSet {
|
|
badgeLabel.backgroundColor = badgeBackgroundColor
|
|
}
|
|
}
|
|
|
|
public var badgeTextColor = UIColor.white {
|
|
didSet {
|
|
badgeLabel.textColor = badgeTextColor
|
|
}
|
|
}
|
|
|
|
public var badgeFont = UIFont.systemFont(ofSize: 12.0) {
|
|
didSet {
|
|
badgeLabel.font = badgeFont
|
|
}
|
|
}
|
|
|
|
public var badgeEdgeInsets: UIEdgeInsets? {
|
|
didSet {
|
|
addBadgeToButon(badge: badge)
|
|
}
|
|
}
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
addBadgeToButon(badge: nil)
|
|
}
|
|
|
|
func addBadgeToButon(badge: String?) {
|
|
badgeLabel.text = badge
|
|
badgeLabel.textColor = badgeTextColor
|
|
badgeLabel.backgroundColor = badgeBackgroundColor
|
|
badgeLabel.font = badgeFont
|
|
badgeLabel.sizeToFit()
|
|
badgeLabel.textAlignment = .center
|
|
let badgeSize = badgeLabel.frame.size
|
|
|
|
let height = max(18, Double(badgeSize.height) + 5.0)
|
|
let width = max(height, Double(badgeSize.width) + 10.0)
|
|
|
|
var vertical: Double?, horizontal: Double?
|
|
if let badgeInset = self.badgeEdgeInsets {
|
|
vertical = Double(badgeInset.top) - Double(badgeInset.bottom)
|
|
horizontal = Double(badgeInset.left) - Double(badgeInset.right)
|
|
|
|
let x = (Double(bounds.size.width) - 10 + horizontal!)
|
|
let y = -(Double(badgeSize.height) / 2) - 10 + vertical!
|
|
badgeLabel.frame = CGRect(x: x, y: y, width: width, height: height)
|
|
} else {
|
|
let x = self.frame.width - CGFloat((width / 2.0))
|
|
let y = CGFloat(-(height / 2.0))
|
|
badgeLabel.frame = CGRect(x: x, y: y, width: CGFloat(width), height: CGFloat(height))
|
|
}
|
|
|
|
badgeLabel.layer.cornerRadius = badgeLabel.frame.height/2
|
|
badgeLabel.layer.masksToBounds = true
|
|
addSubview(badgeLabel)
|
|
badgeLabel.isHidden = badge != nil ? false : true
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
super.init(coder: aDecoder)
|
|
self.addBadgeToButon(badge: nil)
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|