Xcode 6.1 / Swiftを使用してプログラムで画像をUIImageViewに設定します


85

Xcode6.1でプログラムでUIImageViewを設定しようとしています。

@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はXCode6.1の拡張機能を必要としません。

またbgImage.image = UIImage(named: "afternoon")、ちょうど試しましたが、それでも取得します:

ここに画像の説明を入力してください

更新

OK、更新UIImageViewするコードをviewDidLoad関数に追加しましたUIImageViewが、まだ画像が表示されていません(ベースディレクトリにafternoon.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)
}

2
そのコードを関数に入れる必要があります。私はそれをviewDidLoad()に入れます。
HAS

1
アウトレットとして宣言したので、イメージを再初期化するのではなく、単にイメージを割り当ててみましたか?bgImage = UIImageView(image: image)単に使用する代わりにbgImage.image = UIImage(named: "afternoon")
c_rath 2014年

1
更新されたOPを参照してください... XCodeに非常に新しい... JavaScript、jQuery、PHPなどに非常に精通しています
IlludiumPu36 2014年

回答:


158

bgImageをIBOutletとして割り当ててリンクしているので、UIImageViewとして初期化する必要はありません...代わりに、のようにimageプロパティを設定するだけですbgImage.image = UIImage(named: "afternoon")。このコードを実行した後、アウトレットを使用してすでに割り当てられているため、画像は正常に表示されました。

ここに画像の説明を入力してください

ただし、それがアウトレットではなく、ストーリーボード/ xibファイルのUIImageViewオブジェクトにまだ接続されていない場合は、次のようにすることができます...

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!)
    }
}

49

xcode 8では、選択ウィンドウから画像を直接選​​択できます(新規)...

  • 「画像」と入力するだけで、提案ボックスが表示され、リストから「画像リテラル」を選択し(添付の写真を参照)、

  • 次に、正方形をタップすると、
    画像アセットにあるすべての画像(2番目の添付画像を参照)が表示されます...またはそこから他の画像を選択します。

ここに画像の説明を入力してください

  • 次に、四角いボックスをタップします-(上記のオプションを選択すると、四角いボックスが表示されます)

ここに画像の説明を入力してください


4
うわー、IDEでそのような何かを見て初めて、ルックスはかなり今、私のコードで冷やす
Big_Chair

ヘルプバディをありがとう。気をつけて。
thesamoanppprogrammer

11

OK、これで動作しました(プログラムで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)

9

これはどう;

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!

1
..ご協力いただきありがとうございますが、UIImageViewはまだ画像を表示していません...更新されたOPを参照してください
IlludiumPu36 2014年

2

迅速な構文で、これは私のために働きました:

    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

2

Swift 4では、画像がnilとして返される場合。

右側の画像をクリック(ユーティリティ)->ターゲットメンバーシップの確認


2

あなたがあなたの質問で示したようにそれをしたいなら、これはそれをインラインで行う方法です

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
}

2

をドラッグアンドドロップし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")
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.