Swift - 将标签设置在其他视图项的顶部

时间:2015-09-09 11:47:59

标签: ios swift

我正在使用swift 1.2和Xcode 6.4创建一个基本的草图应用程序。我正在处理的功能是在图像中添加文本以供将来操作。

到目前为止,我已经将用户输入的文本通过标签添加到绘图中,但是它被放置(我假设)在要绘制的UIImage后面。这阻止了相关的敲击手势被识别。绘制时标签也会被遮挡。

如何将标签置于其他所有位置以防止其被拉过来?最终目标是允许用户移动标签。

如果我使用的是常用的Web堆栈,我会通过CSS将元素的z-index设置为高值。

编辑:使用view.bringSubviewToFront(label)可以阻止文字被抽取,但不允许点击手势。

继承我的代码:

    func printText(){
        println(textString)

        var label = UILabel(frame: CGRectMake(5, 100, 200, 50 ))
        label.textAlignment = NSTextAlignment.Center
        label.text = textString;

        let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap"))
        label.addGestureRecognizer(tap)

        self.view.addSubview(label);
    }

    func handleTap() {
        print("tap working")
    }

任何帮助都非常感激。

3 个答案:

答案 0 :(得分:43)

如果你想使用z-index:

label.layer.zPosition = 1;

您也可以在父视图上使用bringToFront方法:

self.view.bringSubviewToFront(label);

您可以在此处查看该功能: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/

另外,您应该添加以下内容:

label.userInteractionEnabled = true

启用触控。

答案 1 :(得分:5)

尝试在父视图中使用它们:

view.bringSubviewToFront(label)
view.sendSubviewToBack(imageView)

这完全取决于你能做什么或想做什么。

答案 2 :(得分:3)

您可以通过

调用标签
self.view.bringSubviewToFront(label)

您可以通过

将图片视图发送到后面
self.view.sendSubviewToBack(imageView)