Программно установите изображение в 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 на

1100   8  

8 ответов:

поскольку ваш 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!)
    }
}

в xcode 8 вы можете непосредственно выбрать изображение из окна выбора (новый)...

  • вам просто нужно ввести - "изображение", и вы получите поле для предложений затем выберите - "Image Literal" из списка (см. прилагаемое изображение) и

  • затем нажмите на площади, вы сможете увидеть все изображения(см.
    второе прикрепленное изображение), которые находятся в ваших активах изображения... или выберите другое изображение от там.

enter image description here

  • Теперь нажмите на квадратную коробку - (вы увидите, что квадратная коробка после выбора выше вариант)

enter image description here

ОК, получил его работу с этим (создание 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)

этот код находится в неположенном месте:

var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)

вы должны поместить его внутри функции. Я рекомендую переместить его внутрь

Как насчет этого;

myImageView.image=UIImage(named: "image_1")

где image_1 находится в папке assets как image_1. png.

это сработало для меня, так как я использую случай переключателя для отображения слайда изображения.

с синтаксисом swift это сработало для меня:

    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, Если изображение возвращается в ноль.

нажмите на изображение, с правой стороны (утилиты) - > Проверьте целевое членство

Если вы хотите сделать это так, как вы показали в своем вопросе, это способ сделать это 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
}

Comments

    Ничего не найдено.