试图用UIView遮盖UIButton中的文本

问题描述 投票:0回答:1

使用iOS 13,迅速5。

[尝试掩盖UIButton中的文本,以便逐步显示。我创建了一个扩展,并设法在按钮上绘制视图,但是似乎无法弄清楚如何隐藏显示的文本。

例如,此代码清楚地在按钮上创建了一个UIView,看起来像这样。

enter image description here

这里是代码,UIButton的扩展

extension UIButton {
  func coverWord() {
    let frame = self.frame
    let hider = UIView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 32, height: 64)))
    hider.backgroundColor = UIColor.init(hue: 1, saturation: 1, brightness: 1, alpha: 1)
    self.addSubview(hider)
    self.bringSubviewToFront(hider)
}

现在我知道UIView在按钮上方,因为如果我触摸左侧[红色],我什么也没做,但是如果我触摸右侧[白色],它会按预期工作。

但是,如何获取愚蠢的UIView来掩盖文本。我尝试在隐藏的UIView中创建形状并使用此代码添加到其中。

let layer = CAShapeLayer()
layer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 32, height: 64), cornerRadius: 0).cgPath
layer.fillColor = UIColor.green.cgColor
layer.fillMode = .forwards
hider.layer.addSublayer(layer)

这行得通,当然当然没有。不,它只是将[红色]部分涂成绿色。我仍然可以阅读按钮上的愚蠢文字。

uiview uibutton
1个回答
0
投票

当然,当我发布此问题后,答案就浮现了。与其删除它,不如将其张贴在这里以供后代使用:

func showWord() {

  let sizer = self.frame.size
  let hider = UIView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: sizer))
  hider.backgroundColor = UIColor.white

  let sub = self.titleLabel
  sub!.addSubview(hider)
  sub!.bringSubviewToFront(hider)

  self.addSubview(hider)
  self.bringSubviewToFront(hider)

  UIView.animate(withDuration: 4, animations: {

    hider.alpha = 0
  }) { ( _ ) in
    hider.removeFromSuperview()
 }
}

UIButton中的文本是其中的UILabel。我需要向其中添加UIView来隐藏标签,并向按钮添加按钮以掩盖按下按钮时的操作。

Xcode中有一个视图,向您显示子层。这就是我要做的所有工作来找出解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.