ios - Swift:如何在屏幕边框上制作标签?

标签 ios swift swift2 screen-scraping label

我正在尝试创建一个在屏幕上随机生成标签的游戏​​,但整个单词必须在屏幕内。我在屏幕上还有一个文本字段,我打算将文字放在下面。

我有一个用于添加标签的函数,还有一个用于确保它位于边框内的函数。

func addWord(word: String) {
    let screenSize: CGRect = UIScreen.mainScreen().bounds
    let screenWidth = UInt32(screenSize.width)
    let screenHeight = UInt32(screenSize.height)
    let label = UILabel()
    label.text = word
    label.font = UIFont.systemFontOfSize(32)
    label.sizeToFit()
    label.backgroundColor = UIColor.whiteColor()

    let x = CGFloat(arc4random_uniform(screenWidth))
    let y = CGFloat(arc4random_uniform(screenHeight))

    label.center = CGPointMake(x, y)
    label.center = checkBounds(label, minX: 0, maxX: CGFloat(screenWidth), minY: (newWordsTextField.bounds.origin.y+newWordsTextField.bounds.maxY), maxY: CGFloat(screenHeight))
    view.addSubview(label)

    let panGesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.handlePanGesture(_:)))
    label.addGestureRecognizer(panGesture)
    label.userInteractionEnabled = true
}

func checkBounds(label: UILabel, minX: CGFloat, maxX: CGFloat, minY: CGFloat, maxY: CGFloat)->CGPoint{
    let borders = label.bounds
    var newCenter = label.center
    if borders.minX < minX {
        newCenter.x = newCenter.x + (minX-borders.minX)
    }
    if borders.maxX > maxX {
        newCenter.x = newCenter.x-(borders.maxX-maxX)
    }
    if borders.minY < minY {
        newCenter.y = newCenter.y + (minY-borders.minY)
    }
    if borders.maxY > maxY {
        newCenter.y = newCenter.y-(borders.maxY-maxY)
    }
    return newCenter
}

但由于某种原因,标签不断超出边界,即使该函数应该确保这种情况不会发生。我对 swift 有点陌生,这是我第一次尝试这样的事情,请帮忙,我做错了什么?

最佳答案

如果您正在使用自动布局(几乎可以肯定是因为它是默认设置,您必须手动将其关闭),那么 View 对象的框架和中心将被自动布局约束覆盖(一旦您定义或系统自动创建。)

如果您要手动添加 View ,那么您还需要添加约束。这应该可以解决你的问题。我建议谷歌搜索“通过代码添加 UIViews 和约束”或类似的内容来查找有关如何完成的教程(或者更好的是,只需在 Storyboard中添加 View 并将它们标记为隐藏,直到需要它们为止。

关于ios - Swift:如何在屏幕边框上制作标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38402712/

相关文章:

ios - 单击按钮时用动画隐藏/显示 uiimageview

swift - 属性文本不适用于 Xcode 7 中的自定义字体

ios - 在运行时更改高度时的单元格高度 "wrong on load"

c# - .Net 相当于 Swift 映射和归约

ios - 如果超过其 indexpath.row,如何在 TableView 中设置单元格行高?

swift - 断言从 UIGraphics 生成的 UIImage 全是红色

ios - swift 2 : Sort Object/Multi-Dimensional Array

ios - iOS 7上的ObjectAL

iphone - 如何控制 iOS 中 View 的同时触摸数

ios - 通过企业帐户在内部分发的应用程序。配置文件应该已过期,但仍在工作