ตั้งค่ารูปภาพเป็น UIImageView ด้วยโปรแกรม Xcode 6.1 / Swift


87

ฉันพยายามตั้งค่า 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")แต่ยังคงได้รับ:

ป้อนคำอธิบายภาพที่นี่

อัปเดต

ตกลงฉันใส่รหัสที่จะอัปเดต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

1
ดู OP ที่อัปเดต ... ใหม่มากสำหรับ XCode ... คุ้นเคยกับ JavaScript, jQuery, PHP และอื่น ๆ
IlludiumPu36

คำตอบ:


159

เนื่องจากคุณได้ bgImage ของคุณได้รับมอบหมายและเชื่อมโยงเป็น IBOutlet ไม่มีความจำเป็นที่จะเริ่มต้นมันเป็น UIImageView ... bgImage.image = UIImage(named: "afternoon")แทนสิ่งที่คุณต้องทำคือการตั้งค่าคุณสมบัติภาพเหมือน หลังจากเรียกใช้รหัสนี้ภาพจะดูดีเนื่องจากได้รับการกำหนดโดยใช้เต้าเสียบแล้ว

ป้อนคำอธิบายภาพที่นี่

อย่างไรก็ตามหากไม่ใช่เต้าเสียบและคุณไม่ได้เชื่อมต่อกับวัตถุ 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!)
    }
}

50

ใน xcode 8 คุณสามารถเลือกภาพได้โดยตรงจากหน้าต่างการเลือก (ใหม่) ...

  • คุณเพียงแค่พิมพ์ - "image" และคุณจะได้รับกล่องคำแนะนำจากนั้นเลือก - "Image Literal" จากรายการ (ดูในภาพที่แนบมา) และ

  • จากนั้นแตะที่สี่เหลี่ยมคุณจะสามารถเห็นภาพทั้งหมด (ดูใน
    รูปที่สองที่แนบมา) ซึ่งอยู่ในเนื้อหารูปภาพของคุณ ... หรือเลือกภาพอื่นจากที่นั่น

ป้อนคำอธิบายภาพที่นี่

  • ตอนนี้แตะที่กล่องสี่เหลี่ยม - (คุณจะเห็นกล่องสี่เหลี่ยมนั้นหลังจากเลือกตัวเลือกด้านบน)

ป้อนคำอธิบายภาพที่นี่


4
ว้าวครั้งแรกที่เห็นอะไรแบบนั้นใน IDE ตอนนี้รหัสของฉันดูเท่มาก
Big_Chair

ขอบคุณสำหรับเพื่อนช่วยเหลือ ดูแลเพื่อน.
thesamoanppprogrammer

11

ตกลงมันใช้งานได้กับสิ่งนี้ (การสร้าง 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)

10

เกี่ยวกับเรื่องนี้

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

โดยที่ image_1 อยู่ในโฟลเดอร์ assets เป็น 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

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 หากรูปภาพถูกส่งคืนเป็นศูนย์

คลิกที่รูปภาพทางด้านขวามือ (ยูทิลิตี้) -> ตรวจสอบการเป็นสมาชิกเป้าหมาย


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.