Swift 3 ios:当图像出现时,UILabel需要出现在UIImage的顶部

时间:2017-03-30 03:03:46

标签: ios uiview uiimage

所以我试图让用户能够设计自己的虚拟名片,用户可以在UIView周围拖动标签,他们可以改变UIView的背景颜色,以及UILabel的颜色。卡本身由笔尖表示,用户通过UIPickerView选择不同的颜色选择或模板图像选择。我希望Label出现时出现在Image的顶部,并被拖动到View的那一部分,但它目前没有这样做。改变UIView和文本背景的颜色就好了;我还可以使用.isHidden()添加和删除模板图像(这是一个PNG)。

我的问题是,当UIImage添加到UIView时,它位于UILabel之上。如果UILabel的一部分与png图像的一部分重叠,它就会消失在它后面,我希望它出现在图像上方。

How the UIView looks before the image is unhidden

How the label appears under the image when the test_triangle.png is unhidden

nib的代码位于userCardView.swift中,选择器视图位于mainViewController上,我在其中设置UserDefaults,工作正常。

class userCardView: UIView {

   @IBOutlet var cardView: UIView!
   @IBOutlet weak var testLBL: UILabel!
   @IBOutlet weak var templateImage: UIImageView!

   var colorIndex = ["Black", "White", "Gray"]
   var templateIndex = ["None", "Triangle"]

   override func awakeFromNib() {
       super.awakeFromNib()

       cardView.clipToBounds = true 

       let backColorObject = UserDefaults.standard.object(forKey: "backGroundColor") as? String
       let textColorObject = UserDefaults.standard.object(forKey: "textColor") as? String
       let templateColorObject = UserDefaults.standard.object(forKey: "templateColor") as? String
       let templateImageObject = UserDefaults.standard.object(forKey: "templateImage") as? String

       for _ in templateIndex {
           if templateImageObject == templateIndex[1] {
               templateImage.isHidden = false
               templateImage.image = UIImage(named: "test_triangle.png")
               //testLBL.bringSubview(toFront: templateImage)
               templateImage.bringSubview(toFront: testLBL)
           } else if templateImageObject == templateIndex[0] {
               templateImage.isHidden = true
           } else {
               templateImage.isHidden = true
           }
       }

我仍然是使用swift的新手,所以任何帮助都会非常感谢,谢谢。

1 个答案:

答案 0 :(得分:0)

您需要让testLBL的超级视图将其带到前面。如果templateImage.bringSubview(toFront: testLBL)不是templateImage的父视图,那么您的代码testLBL将无效,因为testLBL不在templateImage的视图中层次结构。

因此,请尝试使用testLBL

的超级视图
<testLBL's parent view>.bringSubview(toFront: testLBL)

testLBL.parentView.bringSubview(toFront: testLBL)

希望它能解决你的问题