2014-11-20 16 views
50

Tôi đang cố gắng để thiết lập UIImageView lập trình trong XCode 6.1:lập trình thiết lập hình ảnh để UIImageView với XCode 6.1/Swift

@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 "tuyên bố dự kiến" với bgImage = UIImageView(image: image) ảnh "afternoon" định dạng PNG, và tôi hiểu là PNG không cần phần mở rộng trong XCode 6.1.

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

enter image description here

CẬP NHẬT

OK, tôi đã đặt mã để cập nhật UIImageView vào viewDidLoad chức năng, nhưng UIImageView vẫn không hiển thị hình ảnh (có trong thư mục cơ sở là 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) 

    } 
+1

Bạn cần phải đặt mã đó vào một hàm. Tôi sẽ đặt nó trong viewDidLoad(). – HAS

+0

Vì bạn đã tuyên bố nó là một lối thoát, 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 (có tên là" chiều ")'? –

+0

Xem cập nhật OP ... Rất mới với XCode ... rất quen thuộc với JavaScript, jQuery, PHP, v.v. – IlludiumPu36

Trả lời

99

Vì bạn đã chỉ định và liên kết bgImage dưới dạng IBOutlet, bạ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ư bgImage.image = UIImage(named: "afternoon"). Sau khi chạy mã này, hình ảnh xuất hiện tốt vì nó đã được gán bằng cách sử dụng ổ cắm.

enter image description here

Tuy nhiên, nếu đó không phải là một lối thoát và bạn không có nó đã kết nối với một đối tượng UIImageView trên một tập tin kịch bản/xib, sau đó bạn có thể để một cái gì đó 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!) 
    } 
} 
3

Mã này là sai 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ó trong hàm viewDidLoad.

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

@IBOutlet weak var bgImage: UIImageView! 
+0

.. cảm ơn sự giúp đỡ của bạn, nhưng UIImageView vẫn không hiển thị hình ảnh ... xem cập nhật OP – IlludiumPu36

5

OK, đã nhận nó làm việc với điều này (tạo ra UIImageView 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) 
4

Làm thế nào về điều này;

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 làm việc cho tôi vì tôi đang sử dụng hộp chuyển đổi để hiển thị trang chiếu hình ảnh.

20

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 gõ - "hình ảnh" và bạn sẽ nhận được một hòm thư góp ý sau đó chọn - "Hình ảnh Literal" từ danh sách (xem trong hình ảnh đính kèm) và

  • sau đó gõ vào ô vuông bạn sẽ có thể xem tất cả hình ảnh (xem trong
    ả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ừ đó.

enter image description here

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

enter image description here

1

Với cú pháp nhanh chóng 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 
1

Trong Swift 4, nếu hình ảnh được trả lại là không.

Bấm vào hình ảnh, ở phía bên tay phải (Utilities) -> Kiểm tra Target Membership

1

Nếu bạn muốn làm điều đó theo cách bạn thể hiện trong câu hỏi của bạn, đây là một cách để làm điều đó 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 
} 
Các vấn đề liên quan