1. ホーム
  2. ios

[解決済み] Xcode 6.1/SwiftでUIImageViewにプログラム的に画像をセットする。

2023-01-06 11:30:45

質問

Xcode 6.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) 画像 "afternoon" は PNG であり、私の理解では、PNG は XCode 6.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)
}

どのように解決するのですか?

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