Программно установить изображение для UIImageView с Xcode 6.1/Swift
Я пытаюсь установить UIImageView программно в 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)
Но Xcode говорит "ожидаемое объявление" с bgImage = UIImageView(image: image)
Изображение "afternoon"
- это PNG, и я понимаю, что PNG не нуждается в расширении в XCode 6.1.
Также попытался просто bgImage.image = UIImage(named: "afternoon")
, но все еще получить:
![enter image description here]()
ОБНОВИТЬ
Хорошо, я поместил код для обновления UIImageView
в функцию viewDidLoad
, но UIImageView
по-прежнему не показывает изображение (которое существует в базовом каталоге как днем UIImageView
):
@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)
}
Ответы
Ответ 1
Поскольку у вас есть свой bgImage, назначенный и связанный как IBOutlet, нет необходимости инициализировать его как UIImageView... вместо этого все, что вам нужно сделать, это установить свойство изображения, например bgImage.image = UIImage(named: "afternoon")
. После запуска этого кода изображение оказалось прекрасным, поскольку оно уже было назначено с помощью розетки.
![enter image description here]()
Однако, если он не был выходом и у вас не было его уже подключено к объекту UIImageView в файле раскадровки /xib, тогда вы могли бы что-то вроде следующего...
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!)
}
}
Ответ 2
В xcode 8 вы можете напрямую выбрать изображение из окна выбора (NEW)...
-
Вам просто нужно набрать - "изображение", и вы получите предложение
затем выберите "Литература изображений" из списка (см. прикрепленное изображение) и
-
затем нажмите на квадрат, вы сможете увидеть все изображения (см.
второе прикрепленное изображение), которые находятся в ваших изображениях... или выберите
другое изображение оттуда.
![введите описание изображения здесь]()
- Теперь коснитесь квадратного квадрата - (вы увидите это квадратное поле после выбора
выше)
![введите описание изображения здесь]()
Ответ 3
ОК, он работает с этим (создавая UIImageView программно):
var imageViewObject :UIImageView
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
imageViewObject.image = UIImage(named:"afternoon")
self.view.addSubview(imageViewObject)
self.view.sendSubviewToBack(imageViewObject)
Ответ 4
Как насчет этого;
myImageView.image=UIImage(named: "image_1")
где image_1 находится в папке с ресурсами как image_1. png.
Это сработало для меня, так как я использую случай переключения для отображения слайда изображения.
Ответ 5
Этот код не в том месте:
var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)
Вы должны поместить его внутри функции. Я рекомендую перемещать его внутри функции viewDidLoad
.
В общем, единственный код, который вы можете добавить внутри класса, который не входит в функцию, - это объявления переменных:
@IBOutlet weak var bgImage: UIImageView!
Ответ 6
С быстрым синтаксисом это сработало для меня:
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
Ответ 7
В Swift 4, если изображение возвращается как ноль.
Нажмите на изображение с правой стороны (Утилиты) → Проверить целевое членство
Ответ 8
Если вы хотите сделать это так, как вы показали в своем вопросе, это способ сделать это встроенным
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
}
Ответ 9
Вам просто нужно перетащить ImageView
, создать действие розетки, связать его и предоставить изображение (Xcode будет искать в папке ваших assets
имя, которое вы указали (здесь: "toronto"))
В yourProject/ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imgView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imgView.image = UIImage(named: "toronto")
}
}