Swift 之自定义 Toast

  • 代码:
import Foundation
import UIKit

enum Toast {
  static func toast(at view: UIView, message: String, completion: (() -> Void)? = nil) {
    let toastLabel = MGSLabel(frame: .zero)
    toastLabel.text = "  \(message)  "
    toastLabel.numberOfLines = 0
    toastLabel.font = UIFont.systemFont(ofSize: 15.0)
    toastLabel.backgroundColor = UIColor(white: 0.0, alpha: 0.5)
    toastLabel.textColor = .white
    toastLabel.textAlignment = .center
    toastLabel.layer.cornerRadius = 7.0
    toastLabel.layer.masksToBounds = true
    toastLabel.textInsets = UIEdgeInsets(top: 5.0, left: 0, bottom: 5.0, right: 0)
    
    view.addSubview(toastLabel)
    toastLabel.setContentHuggingPriority(.init(rawValue: 750.0), for: .horizontal)
    toastLabel.snp.makeConstraints { make in
      make.center.equalToSuperview()
      make.leading.trailing.equalToSuperview().inset(10.0)
    }
    
    DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
      toastLabel.removeFromSuperview()
      completion?()
    }
  }
}
  • 其中, MGSLabel 的代码为:
    主要功能:可以设置 UILabel 的上下左右间距
import Foundation
import UIKit

class MGSLabel: UILabel {
  var textInsets: UIEdgeInsets = .zero
  
  override func drawText(in rect: CGRect) {
    super.drawText(in: UIEdgeInsetsInsetRect(rect, textInsets))
  }
  
  override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
    let insets = textInsets
    var rect = super.textRect(forBounds: UIEdgeInsetsInsetRect(bounds, insets),
                              limitedToNumberOfLines: numberOfLines)
    
    rect.origin.x -= insets.left
    rect.origin.y -= insets.top
    rect.size.width += (insets.left + insets.right)
    rect.size.height += (insets.top + insets.bottom)
    return rect
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值