Я пытаюсь программно установить 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)
Image "afternoon"
- это PNG, и я понимаю, что PNG не нуждается в расширении в XCode 6.1.
Тоже пробовал только что bgImage.image = UIImage(named: "afternoon")
, но все равно получаю:
ОБНОВИТЬ
Хорошо, я поместил код для обновления UIImageView
в viewDidLoad
функцию, но UIImageView
все еще не показывает изображение (которое существует в базовом каталоге как day.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)
просто использоватьbgImage.image = UIImage(named: "afternoon")
?Ответы:
Поскольку ваш bgImage назначен и связан как IBOutlet, нет необходимости инициализировать его как UIImageView ... вместо этого все, что вам нужно сделать, это установить свойство изображения, например
bgImage.image = UIImage(named: "afternoon")
. После запуска этого кода изображение выглядело нормально, так как оно уже было назначено с помощью розетки.Однако, если это не розетка, и она еще не подключена к объекту 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!) } }
источник
В xcode 8 вы можете напрямую выбрать изображение из окна выбора (НОВИНКА) ...
Вам просто нужно ввести - «изображение», и вы получите окно предложения, затем выберите - «Литерал изображения» из списка (см. Прикрепленное изображение) и
затем нажмите на квадрат, чтобы увидеть все изображения (см.
второе прикрепленное изображение), которые есть в ваших изображениях ... или выберите другое изображение оттуда.
источник
Хорошо, он работал с этим (программно создавая 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)
источник
Как насчет этого;
myImageView.image=UIImage(named: "image_1")
где изображение_1 находится в папке с ресурсами как изображение_1. png .
Это сработало для меня, так как я использую корпус переключателя для отображения слайда изображения.
источник
Этот код находится не в том месте:
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!
источник
С быстрым синтаксисом это сработало для меня:
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
источник
В Swift 4, если изображение возвращается как nil.
Нажмите на изображение с правой стороны (Утилиты) -> Проверить целевое членство
источник
Если вы хотите сделать это так, как вы указали в своем вопросе, это способ сделать это встроенным
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 }
источник
Вам просто нужно перетащить
ImageView
, создать действие выхода, связать его и предоставить изображение (Xcode будет искать в вашемassets
папке указанное вами имя (здесь: «торонто»))В
yourProject/ViewController.swift
import UIKit class ViewController: UIViewController { @IBOutlet weak var imgView: UIImageView! override func viewDidLoad() { super.viewDidLoad() imgView.image = UIImage(named: "toronto") } }
источник