如何在背景图像上添加UILabel和UIText

时间:2015-11-05 22:25:43

标签: ios swift autolayout

这是我的代码的一部分。 我想在背景图片上显示两个UILabel和两个UITextFieldbackgroundLogin.jpg

import Foundation
import UIKit
class LoginViewController:UIViewController
{
override func viewDidLoad() {
    super.viewDidLoad()

    let BackGroundImage:UIImageView = UIImageView(frame: CGRectMake(0, 0, self.view.frame.width , self.view.frame.height))

    let image: UIImage = UIImage(named: "backgroundLogin.jpg")!

    BackGroundImage.image = image
    self.view.addSubview(BackGroundImage)
    //self.view.backgroundColor = UIColor(patternImage: UIImage(named: "backgroundLogin.jpg")!)

    username.text = "User name"
    password.text = "Password"

}

@IBOutlet weak var username: UILabel!
@IBOutlet weak var password: UILabel!

}

但是当这段代码运行时,它看起来像是:

enter image description here

我希望它可以在图像上有两个标签,但是如何添加?

3 个答案:

答案 0 :(得分:0)

您似乎在代码中添加UIImageView,在故事板上添加UILabels,然后在运行应用程序时,标签位于UIImageView后面,您无法看到。

只需检查它在viewDidLoad中添加BackGroundImage.hidden = true

您无法将UILabel添加到UIImageView中。一种解决方案是在代码中添加所有视图,首先是图像视图,然后是标签。其他选项将在故事板中以相同的顺序添加所有选项。

像这样:enter image description here

答案 1 :(得分:0)

你在这里以编程方式做了很多事情,你不需要这样做。

  1. 在Storyboard中,将UIImageView添加到空白的ViewController(你 如果你愿意,可以稍后重命名视图控制器)

  2. 选择新的UIImageView后,按住Control键并拖动以在视图控制器中创建一个名为backgroundImage的插座

  3. 选择UIImageView后,转到“属性”检查器并从下拉列表中选择要显示的图像。 框,选择您的图像。项目中的所有图像都应出现在 下拉框。

  4. 现在将一个UILabel添加到ViewController并按住control并拖动以在相应的代码中创建一个插座

  5. 在viewDidLoad()方法中,将插座置于前面

  6. 所有这些都需要代码:

    class ViewController: UIViewController {
    
      @IBOutlet weak var backgroundImage: UIImageView!
      @IBOutlet weak var username: UILabel!
    
      override func viewDidLoad() {
        super.viewDidLoad()
    
        self.view.bringSubviewToFront(username)
      }
    }
    

答案 2 :(得分:0)

就像我在评论中所说,你应该尝试将UILabels带到前面。

由于您是以编程方式执行此操作,因此可以使用bringSubviewToFront来完成此处Apple的文档以及您可以使用的其他UIView功能。注意:UILabel继承自UIView,因此您可以使用这些方法。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/doc/uid/TP40006816-CH3-SW46

代码:

override func viewDidLoad() {
    super.viewDidLoad()

    let BackGroundImage:UIImageView = UIImageView(frame: CGRectMake(0, 0, self.view.frame.width , self.view.frame.height))

    let image: UIImage = UIImage(named: "backgroundLogin.jpg")!

    BackGroundImage.image = image
    self.view.addSubview(BackGroundImage)
    //self.view.backgroundColor = UIColor(patternImage: UIImage(named: "backgroundLogin.jpg")!)

    username.text = "User name"
    password.text = "Password"

    self.view.bringSubviewToFront(username)
    self.view.bringSubviewToFront(password)
}