所以我试图让用户能够设计自己的虚拟名片,用户可以在UIView周围拖动标签,他们可以改变UIView的背景颜色,以及UILabel的颜色。卡本身由笔尖表示,用户通过UIPickerView选择不同的颜色选择或模板图像选择。我希望Label出现时出现在Image的顶部,并被拖动到View的那一部分,但它目前没有这样做。改变UIView和文本背景的颜色就好了;我还可以使用.isHidden()添加和删除模板图像(这是一个PNG)。
我的问题是,当UIImage添加到UIView时,它位于UILabel之上。如果UILabel的一部分与png图像的一部分重叠,它就会消失在它后面,我希望它出现在图像上方。
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的新手,所以任何帮助都会非常感谢,谢谢。
答案 0 :(得分:0)
您需要让testLBL
的超级视图将其带到前面。如果templateImage.bringSubview(toFront: testLBL)
不是templateImage
的父视图,那么您的代码testLBL
将无效,因为testLBL
不在templateImage
的视图中层次结构。
因此,请尝试使用testLBL
<testLBL's parent view>.bringSubview(toFront: testLBL)
或
testLBL.parentView.bringSubview(toFront: testLBL)
希望它能解决你的问题