如何通过 UIButtons 读取 UILabel(没有文本)
Posted
技术标签:
【中文标题】如何通过 UIButtons 读取 UILabel(没有文本)【英文标题】:How to read a UILabel through UIButtons (that have no text) 【发布时间】:2016-02-12 21:15:14 【问题描述】:我正在尝试使用UILabel
查看点数(点击UIButtons
的次数),但我只能看到数字,直到出现UIButton
。即使我点击UIButton
,它也会“消失”,实际上只是像self.view.backgroundColor
一样变黑,但仍会阻止UILabel
的文字被看到。
是否有任何简单的解决方案,或者最好的方法就是不让方块在那里生成,但是你将无法做到enemy.center
,因为它会更难点击。
import UIKit
class ViewController: UIViewController
@IBOutlet weak var scoreLabel: UILabel!
var points: Int = 0
func randomPoint() -> CGPoint
let randomPoint: CGPoint = CGPoint(x:CGFloat(arc4random()%320),y:CGFloat(arc4random()%568))
return randomPoint
func randomColor() -> UIColor
let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())
return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
func spawnEnemy()
let enemy: UIButton = UIButton(frame: CGRect(x: 160, y: 160, width: 150, height: 150))
enemy.backgroundColor = randomColor()
enemy.center = randomPoint()
enemy.addTarget(self, action: Selector("buttonPushed:"), forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(enemy)
func buttonPushed(sender : UIButton)
sender.backgroundColor = UIColor.blackColor()
points = points + 1
scoreLabel.textAlignment = .Center
scoreLabel.text = "\(points)"
scoreLabel.backgroundColor = UIColor.blackColor()
if sender.frame.height < 50 || sender.frame.width < 50
sender.frame = CGRectMake(sender.frame.origin.x, sender.frame.origin.y, 50, 50)
sender.backgroundColor = self.randomColor()
sender.center = self.randomPoint()
return
override func viewDidLoad()
super.viewDidLoad()
NSTimer.scheduledTimerWithTimeInterval(0.75, target: self, selector: Selector("spawnEnemy"), userInfo: nil, repeats: true)
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
【问题讨论】:
【参考方案1】:您可以将标签的 zIndex 设置为更高的数字,以便它始终位于可能在完全相同位置生成的任何按钮的“前面”。默认值为 0,因此如果您将标签的 zIndex 设置为 1,按钮将在其下方生成。
【讨论】:
【参考方案2】:如果您想在按钮后面看到标签,可以将ackgroundColor
设置为UIColor.clearColor()
而不是.blackColor()
您还可以将scoreLabel
移动到屏幕顶部的视图中,并让您的所有“敌人”在该视图下方生成。您必须修改 randomPoint()
以考虑不同的大小,但这可能比试图看穿您的按钮更好。
【讨论】:
哦,好的。谢谢你。我确实最终修改了 randomPoint() 并且效果很好。以上是关于如何通过 UIButtons 读取 UILabel(没有文本)的主要内容,如果未能解决你的问题,请参考以下文章
SKScene 与 UIKit 元素(UIButtons,UILabel,...)的场景转换