2015-05-05 4 views
6

Что мне нужно сделать, это добавить изображение круга в ячейку на uitableview. Как я могу это сделать?Как добавить пользовательское изображение в ячейку таблицы в Swift?

Я попробовал некоторый код, но я не работает вообще, вот мой код:

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 

Я получил эту ошибку:

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

+0

просто заменить последнюю строку. cell.imageView = ImageView , а затем проверить – aBilal17

+0

он говорит: «не может назначить„ImageView“в ячейке» –

+0

нормально заменить последнюю строку, что cell.imageView.image = изображение абд затем проверить – aBilal17

ответ

17

Вы не можете назначить изображение таким образом. Но U может сделать это таким образом.

Первая функция надстройки, которая будет изменять размер изображения:

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 
} 

После этого вы можете назначить изображение:

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 

И результат будет:

enter image description here

Или вы можете попробовать это расширение:

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

и вы можете назначить изображение:

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

Удлинители кредиты THIS ответ.

+0

Спасибо, человек, расширение работает для меня. –

+0

Рад помочь вам .. –

+0

Обратите внимание, что расширение здесь не сохраняет шкалу UIImage, и это может быть актуально. Вы можете создать новый UIImage из результата с исходной шкалой, если хотите. –

1

Сделать один класс из Cell, которые хотят для загрузки в TableView.

Класс 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 
    } 
} 

Теперь загрузите эту ячейку в вашем Tableview, как показано ниже.

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

Попробуйте этот код. Это дает именно то, что вы хотите ....

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

Эй, Ega Setya Putra ... Это очень измененный код вашего кода. И простой способ сделать. – Pritam

+0

это дает мне круглое изображение, но изображение больше, чем ячейка tableview. Спасибо btw –

+0

, а затем измените размер изображения как «var imageView = UIImageView (frame: CGRectMake (5, 5, 60, 60))» и 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

Если это так, просто возьмите «let image». И изображение остается, как оно есть –

+0

http: //www.ioscreator.com/tutorials/prototype-cells-tableview-tutorial-ios8-swift просто взгляните –

Смежные вопросы