如何让图像覆盖整个 UIView?
How to get image to cover entire UIView?
我在下面有这段代码,可以将图像放置在视图上。问题是从 iPhone 转移到 iPad 时,创建固定的高度和宽度不起作用。我希望代码能够转移整个 canvas,而不是固定金额。
@IBOutlet weak var jj: draw!
override func viewDidLoad() {
super.viewDidLoad()
let image = UIImage(named: "se")
let imageView = UIImageView(image: image!)
imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
jj.addSubview(imageView)
}
如你所愿,将 imageView 覆盖在 jj 视图上。
此代码将正常工作。
@IBOutlet weak var jj: draw!
private var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad((
self.imageView = UIImageView(image : UIImage(named: ”se”) )
// set properties blah blah as your code
// but do not addSubview to Outlet in viewDidLoad
// they are not initialized yet
}
override func viewWillAppear( _ animated: Bool) {
super.viewWillAppear(animated);
// this method can be called multiple times as the view controller presented or dismissed
// so make sure the imageView is added to superview if it’s not added
if self.imageView.superview == nil {
jj.addSubview(imageView);
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// layout your responsive code here
// you wish to cover your image view upon your jj view
imageView.frame = CGRect(origin: .zero, size: jj.frame.size)
}
您可以轻松地使用自动布局来完成此任务。
let backgroundImage : UIImageView = {
let image = UIImageView(image: #imageLiteral(resourceName: "name-of-image"))
image.translatesAutoresizingMaskIntoConstraints = false
image.contentMode = .scaleToFill
return image
}()
override func viewDidLoad() {
super.viewDidLoad()
setUpView()
}
func setUpView(){
view.addSubview(backgroundImage)
NSLayoutConstraint.activate([
backgroundImage.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
backgroundImage.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
backgroundImage.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
backgroundImage.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor)
])
}
请尝试以下方法,希望对您有所帮助。
override func viewDidLoad() {
super.viewDidLoad((
self.imageView.layer.contents = #imageLiteral(resourceName: "se");
// In place of #imageLiteral(resourceName: "se"), you can write your image name
}
我建议你在情节提要中做。使用自动布局
所以它在每个设备上看起来都一样。
我在下面有这段代码,可以将图像放置在视图上。问题是从 iPhone 转移到 iPad 时,创建固定的高度和宽度不起作用。我希望代码能够转移整个 canvas,而不是固定金额。
@IBOutlet weak var jj: draw!
override func viewDidLoad() {
super.viewDidLoad()
let image = UIImage(named: "se")
let imageView = UIImageView(image: image!)
imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
jj.addSubview(imageView)
}
如你所愿,将 imageView 覆盖在 jj 视图上。 此代码将正常工作。
@IBOutlet weak var jj: draw!
private var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad((
self.imageView = UIImageView(image : UIImage(named: ”se”) )
// set properties blah blah as your code
// but do not addSubview to Outlet in viewDidLoad
// they are not initialized yet
}
override func viewWillAppear( _ animated: Bool) {
super.viewWillAppear(animated);
// this method can be called multiple times as the view controller presented or dismissed
// so make sure the imageView is added to superview if it’s not added
if self.imageView.superview == nil {
jj.addSubview(imageView);
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// layout your responsive code here
// you wish to cover your image view upon your jj view
imageView.frame = CGRect(origin: .zero, size: jj.frame.size)
}
您可以轻松地使用自动布局来完成此任务。
let backgroundImage : UIImageView = {
let image = UIImageView(image: #imageLiteral(resourceName: "name-of-image"))
image.translatesAutoresizingMaskIntoConstraints = false
image.contentMode = .scaleToFill
return image
}()
override func viewDidLoad() {
super.viewDidLoad()
setUpView()
}
func setUpView(){
view.addSubview(backgroundImage)
NSLayoutConstraint.activate([
backgroundImage.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
backgroundImage.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
backgroundImage.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
backgroundImage.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor)
])
}
请尝试以下方法,希望对您有所帮助。
override func viewDidLoad() {
super.viewDidLoad((
self.imageView.layer.contents = #imageLiteral(resourceName: "se");
// In place of #imageLiteral(resourceName: "se"), you can write your image name
}
我建议你在情节提要中做。使用自动布局
所以它在每个设备上看起来都一样。