2015-05-05 13 views
6

Những gì tôi cần làm là thêm hình ảnh vòng tròn vào ô trên uitableview.Làm cách nào tôi có thể làm điều đó?Làm cách nào để thêm số lần xem hình ảnh tùy chỉnh trong ô xem bảng trong Swift?

Tôi đã thử một số mã nhưng tôi không làm việc ở tất cả, đây là mã của tôi:

let imageName = "person.png" 
    let image = UIImage(named: imageName) 
    var imageView = UIImageView(image: image!) 

    imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100)) 
    imageView.layer.borderWidth=1.0 
    imageView.layer.masksToBounds = false 
    imageView.layer.borderColor = UIColor.whiteColor().CGColor 
    imageView.layer.cornerRadius = 13; 
    imageView.clipsToBounds = true 

    cell.imageView!.image = imageView 

Tôi đã nhận lỗi này:

cannot assign a value of type ‘UIImageView’ to a value of type ‘UIImage?'

+0

chỉ thay thế dòng cuối cùng. cell.imageView = IMAGExem và sau đó kiểm tra – aBilal17

+0

nó nói "không thể gán 'IMAGExem' trong phòng giam" –

+0

ok thay thế dòng cuối cùng như thế, cell.imageView.image = hình ảnh abd sau đó kiểm tra – aBilal17

Trả lời

17

Bạn không thể chỉ định hình ảnh theo cách đó. Nhưng U có thể làm theo cách này.

Đầu tiên add chức năng mà sẽ thay đổi kích thước hình ảnh của bạn:

func resizeImage(image:UIImage, toTheSize size:CGSize)->UIImage{ 


    var scale = CGFloat(max(size.width/image.size.width, 
     size.height/image.size.height)) 
    var width:CGFloat = image.size.width * scale 
    var height:CGFloat = image.size.height * scale; 

    var rr:CGRect = CGRectMake(0, 0, width, height); 

    UIGraphicsBeginImageContextWithOptions(size, false, 0); 
    image.drawInRect(rr) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext(); 
    return newImage 
} 

Sau đó bạn có thể gán hình ảnh:

let imageName = "11749-simple.jpg" 
let image = UIImage(named: imageName) 
let newImage = resizeImage(image!, toTheSize: CGSizeMake(70, 70)) 
var cellImageLayer: CALayer? = cell.cellImage.layer 
cellImageLayer!.cornerRadius = cellImageLayer!.frame.size.width/2 
cellImageLayer!.masksToBounds = true 
cell.cellImage.image = newImage 

Và kết quả sẽ là:

enter image description here

Hoặc bạn có thể thử tiện ích này:

extension UIImage { 
var circleMask: UIImage { 
    let square = size.width < size.height ? CGSize(width: size.width, height: size.width) : CGSize(width: size.height, height: size.height) 
    let imageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: square)) 
    imageView.contentMode = UIViewContentMode.ScaleAspectFill 
    imageView.image = self 
    imageView.layer.cornerRadius = square.width/2 
    imageView.layer.borderColor = UIColor.whiteColor().CGColor 
    imageView.layer.borderWidth = 5 
    imageView.layer.masksToBounds = true 
    UIGraphicsBeginImageContext(imageView.bounds.size) 
    imageView.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    let result = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return result 
    } 
} 

và bạn có thể gán hình ảnh:

let imageName = "11749-simple.jpg" 
let image = UIImage(named: imageName) 
cell.cellImage.image = image?.circleMask 

tín dụng mở rộng để THIS câu trả lời.

+0

Cảm ơn người đàn ông, công việc mở rộng cho tôi. –

+0

Vui lòng giúp bạn .. –

+0

Lưu ý rằng tiện ích mở rộng ở đây không giữ nguyên tỷ lệ UIImage và có thể có liên quan. Bạn có thể tạo UIImage mới từ kết quả với tỷ lệ ban đầu nếu bạn muốn. –

1

Thực hiện một lớp Cell mà muốn để tải trong số TableView của bạn.

Lớp CellComment:

class CellComment: UITableViewCell 
{ 
    @IBOutlet weak var imageV_profile: UIImageView! 

    override func awakeFromNib() { 

      super.awakeFromNib() 

      imageV_profile.layer.cornerRadius = 25 

     imageV_profile.layer.masksToBounds = true 
    } 
} 

Bây giờ Load Cell này trong tableview của bạn như dưới đây.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 

     var cell:CellPost! = tableView.dequeueReusableCellWithIdentifier("CellPost") as? CellPost 

     if (cell == nil) 
     { 
      let nib:Array = NSBundle.mainBundle().loadNibNamed("CellPost", owner: self, options: nil) 
      cell = nib[0] as? CellPost 
     } 

     cell.imageV_profile.image = UIImage(named: "Your image name") 

     return cell 
} 
0

Hãy thử mã này. Điều này cung cấp cho chính xác những gì bạn muốn ....

let imageName = "person.png" 
let image1 = UIImage(named: imageName) 

var imageView = UIImageView(frame: CGRectMake(5, 5, 100, 100)) 
imageView.layer.borderWidth=1.0 
imageView.layer.masksToBounds = true 
imageView.layer.borderColor = UIColor.whiteColor().CGColor 
imageView.layer.cornerRadius = 50;// Corner radius should be half of the height and width. 
imageView.image = image1 
cell.addSubview(imageView) 
+0

Xin chào, Ega Setya Putra ... Đây là một mã được sửa đổi rất nhiều mã của bạn. Và một cách đơn giản để làm. – Pritam

+0

nó cung cấp cho tôi hình ảnh tròn, nhưng hình ảnh lớn hơn ô xem bảng. Cảm ơn btw –

+0

sau đó thay đổi kích thước của imageview như "var imageView = UIImageView (khung: CGRectMake (5, 5, 60, 60))" và imageView.layer.cornerRadius = 30; – Pritam

1
can you just replace imageView to image 

let imageName = "person.png" 
let image = UIImage(named: imageName) 
var imageView = UIImageView(image: image!) 
imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100)) 
imageView.layer.borderWidth=1.0 
imageView.layer.masksToBounds = false 
imageView.layer.borderColor = UIColor.whiteColor().CGColor 
imageView.layer.cornerRadius = 13; 
imageView.clipsToBounds = true 

cell.imageView!.image = image 
+0

nếu nó như thế, nó chỉ là "để cho hình ảnh". Và hình ảnh vẫn giữ nguyên là –

+0

http: //www.ioscreator.com/tutorials/prototype-cells-tableview-tutorial-ios8-swift chỉ cần xem –

Các vấn đề liên quan