Lập trình đặt hình ảnh thành UIImageView với Xcode 6.1 / Swift


85

Tôi đang cố gắng đặt UIImageView theo lập trình trong 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)

Nhưng Xcode đang nói "khai báo dự kiến" với bgImage = UIImageView(image: image) Hình ảnh "afternoon"là PNG và tôi hiểu là PNG không cần phần mở rộng trong XCode 6.1.

Cũng đã thử chỉ bgImage.image = UIImage(named: "afternoon"), nhưng vẫn nhận được:

nhập mô tả hình ảnh ở đây

CẬP NHẬT

OK, tôi đã đặt mã để cập nhật UIImageViewvào viewDidLoadhàm, nhưng UIImageViewvẫn không hiển thị hình ảnh (tồn tại trong thư mục cơ sở là chiều.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
Bạn cần đặt mã đó vào một hàm. Tôi đã đặt nó trong viewDidLoad ().

1
Vì bạn đã khai báo nó là một ổ cắm, bạn đã thử chỉ định hình ảnh thay vì khởi tạo lại nó chưa? thay vì bgImage = UIImageView(image: image)chỉ sử dụng bgImage.image = UIImage(named: "afternoon")?
c_rath

1
Xem cập nhật OP ... Rất mới để XCode ... rất quen thuộc với Javascript, jQuery, PHP vv
IlludiumPu36

Câu trả lời:


158

Vì bạn đã gán và liên kết bgImage dưới dạng IBOutlet, nên không cần khởi tạo nó dưới dạng UIImageView ... thay vào đó, tất cả những gì bạn cần làm là đặt thuộc tính hình ảnh như thế nào bgImage.image = UIImage(named: "afternoon"). Sau khi chạy mã này, hình ảnh hiển thị tốt vì nó đã được gán bằng ổ cắm.

nhập mô tả hình ảnh ở đây

Tuy nhiên, nếu nó không phải là một ổ cắm và bạn chưa kết nối nó với một đối tượng UIImageView trên một tệp storyboard / xib, thì bạn có thể làm như sau ...

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

Trong xcode 8, bạn có thể trực tiếp chọn hình ảnh từ cửa sổ lựa chọn (MỚI) ...

  • Bạn chỉ cần nhập - "hình ảnh" và bạn sẽ nhận được một hộp gợi ý, sau đó chọn - "Hình ảnh Literal" từ danh sách (xem trong hình đính kèm) và

  • sau đó chạm vào hình vuông, bạn sẽ có thể xem tất cả hình ảnh (xem trong
    hình ảnh đính kèm thứ hai) có trong nội dung hình ảnh của bạn ... hoặc chọn hình ảnh khác từ đó.

nhập mô tả hình ảnh ở đây

  • Bây giờ hãy nhấn vào hộp vuông - (Bạn sẽ thấy hộp vuông đó sau khi chọn tùy chọn trên)

nhập mô tả hình ảnh ở đây


4
Wow, lần đầu tiên nhìn thấy một cái gì đó như thế trong một IDE, ngoại hình khá mát mẻ trong mã của tôi bây giờ
Big_Chair

Cảm ơn bạn đã giúp đỡ. Chăm sóc bạn đời.
thesamoanppprogrammer

11

OK, nó hoạt động với cái này (tạo UIImageView theo lập trình):

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

Còn cái này thì sao;

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

trong đó image_1 nằm trong thư mục nội dung dưới dạng image_1. png .

Điều này phù hợp với tôi vì tôi đang sử dụng hộp chuyển đổi để hiển thị trang chiếu hình ảnh.


5

Mã này không đúng chỗ:

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

Bạn phải đặt nó bên trong một hàm. Tôi khuyên bạn nên di chuyển nó vào bên trong viewDidLoadhàm.

Nói chung, mã duy nhất bạn có thể thêm vào trong lớp không nằm trong hàm là các khai báo biến như:

@IBOutlet weak var bgImage: UIImageView!

1
..thanks giúp đỡ của bạn, nhưng UIImageView vẫn không hiển thị hình ảnh ... thấy cập nhật OP
IlludiumPu36

2

Với cú pháp nhanh chóng, điều này đã làm việc cho tôi:

    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

Trong Swift 4, nếu hình ảnh được trả về là nil.

Nhấp vào hình ảnh, ở bên tay phải (Tiện ích) -> Kiểm tra Tư cách thành viên Mục tiêu


2

Nếu bạn muốn làm theo cách bạn đã trình bày trong câu hỏi của mình, thì đây là một cách để làm điều đó

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

Bạn chỉ cần kéo và thả một ImageView, tạo hành động đầu ra, liên kết nó và cung cấp một hình ảnh (Xcode sẽ tìm trong assetsthư mục của bạn cho tên bạn đã cung cấp (ở đây: "to Toronto"))

Trong yourProject/ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        imgView.image = UIImage(named: "toronto")
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.