Saya mencoba mengatur UIImageView secara terprogram di Xcode 6.1:
@IBOutlet weak var bgImage: UIImageView!
var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)
Tapi Xcode mengatakan "deklarasi yang diharapkan" dengan bgImage = UIImageView(image: image)
Gambar "afternoon"
adalah PNG, dan pemahaman saya adalah PNG tidak memerlukan ekstensi di XCode 6.1.
Juga mencoba bgImage.image = UIImage(named: "afternoon")
, tetapi tetap mendapatkan:
MEMPERBARUI
Oke, saya telah memasukkan kode untuk memperbarui UIImageView
ke dalam viewDidLoad
fungsi, tetapi UIImageView
masih belum menampilkan gambar (yang ada di direktori dasar sebagai sore.png):
@IBOutlet weak var bgImage: UIImageView!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var timeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
updateTime()
var timer = NSTimer()
let aSelector : Selector = "updateTime"
timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
}
bgImage = UIImageView(image: image)
hanya menggunakanbgImage.image = UIImage(named: "afternoon")
?Jawaban:
Karena Anda telah menetapkan bgImage dan ditautkan sebagai IBOutlet, Anda tidak perlu menginisialisasinya sebagai UIImageView ... sebagai gantinya, yang perlu Anda lakukan hanyalah menyetel properti gambar seperti
bgImage.image = UIImage(named: "afternoon")
. Setelah menjalankan kode ini, gambar tampak baik-baik saja karena sudah ditetapkan menggunakan outlet.Namun, jika itu bukan outlet dan Anda belum memilikinya terhubung ke objek UIImageView pada file storyboard / xib, maka Anda bisa melakukan sesuatu seperti berikut ...
class ViewController: UIViewController { var bgImage: UIImageView? override func viewDidLoad() { super.viewDidLoad() var image: UIImage = UIImage(named: "afternoon")! bgImage = UIImageView(image: image) bgImage!.frame = CGRectMake(0,0,100,200) self.view.addSubview(bgImage!) } }
sumber
Di xcode 8 Anda dapat langsung memilih gambar dari jendela pemilihan (BARU) ...
Anda hanya perlu mengetik - "gambar" dan Anda akan mendapatkan kotak saran lalu pilih - "Literal Gambar" dari daftar (lihat di gambar terlampir) dan
kemudian ketuk pada kotak Anda akan dapat melihat semua gambar (lihat di
gambar terlampir kedua) yang ada di aset gambar Anda ... atau pilih gambar lain dari sana.
sumber
Oke, membuatnya berfungsi dengan ini (membuat UIImageView secara terprogram):
var imageViewObject :UIImageView imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600)) imageViewObject.image = UIImage(named:"afternoon") self.view.addSubview(imageViewObject) self.view.sendSubviewToBack(imageViewObject)
sumber
Bagaimana dengan ini;
myImageView.image=UIImage(named: "image_1")
di mana gambar_1 berada dalam folder aset sebagai gambar_1. png .
Ini berhasil untuk saya karena saya menggunakan sakelar untuk menampilkan slide gambar.
sumber
Kode ini ada di tempat yang salah:
var image : UIImage = UIImage(named:"afternoon")! bgImage = UIImageView(image: image) bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200) view.addSubview(bgImage)
Anda harus menempatkannya di dalam suatu fungsi. Saya sarankan untuk memindahkannya ke dalam
viewDidLoad
fungsi.Secara umum, satu-satunya kode yang dapat Anda tambahkan di dalam kelas yang tidak berada di dalam fungsi adalah deklarasi variabel seperti:
@IBOutlet weak var bgImage: UIImageView!
sumber
Dengan sintaks cepat, ini berfungsi untuk saya:
let leftImageView = UIImageView() leftImageView.image = UIImage(named: "email") let leftView = UIView() leftView.addSubview(leftImageView) leftView.frame = CGRect(x: 0, y: 0, width: 40, height: 40) leftImageView.frame = CGRect(x: 10, y: 10, width: 20, height: 20) userNameTextField.leftViewMode = .always userNameTextField.leftView = leftView
sumber
Di Swift 4, jika gambar dikembalikan sebagai nihil.
Klik pada gambar, di sisi kanan (Utilities) -> Periksa Keanggotaan Target
sumber
Jika Anda ingin melakukannya seperti yang Anda tunjukkan dalam pertanyaan Anda, ini adalah cara untuk melakukannya secara inline
class YourClass: UIViewController{ @IBOutlet weak var tableView: UITableView! //other IBOutlets //THIS is how you declare a UIImageView inline let placeholderImage : UIImageView = { let placeholderImage = UIImageView(image: UIImage(named: "nophoto")) placeholderImage.contentMode = .scaleAspectFill return placeholderImage }() var someVariable: String! var someOtherVariable: Int! func someMethod(){ //method code } //and so on }
sumber
Anda hanya perlu menyeret dan melepas
ImageView
, membuat tindakan outlet, menautkannya, dan memberikan gambar (Xcode akan mencariassets
nama yang Anda berikan di folder Anda (di sini: "toronto"))Di
yourProject/ViewController.swift
import UIKit class ViewController: UIViewController { @IBOutlet weak var imgView: UIImageView! override func viewDidLoad() { super.viewDidLoad() imgView.image = UIImage(named: "toronto") } }
sumber