2015-06-06 3 views
4

Я пытаюсь создать круговое изображение в каждой строке моего представления таблицы. Я следил за учебниками, но мое изображение получило форму бриллианта, а не круговую. Что я делаю неправильно:круглое изображение в виде таблицы cell swift

var cellImage = UIImage(named: pic) 
cell.imageView!.image = cellImage 
cell.imageView!.layer.frame = CGRectMake(0, 0, 190, 190) 
cell.imageView!.layer.borderWidth = 0.5 
cell.imageView!.layer.masksToBounds = false 
cell.imageView!.layer.borderColor = UIColor.blueColor().CGColor 

cell.imageView!.layer.cornerRadius = cell.imageView!.layer.frame.height/2 
cell.imageView!.clipsToBounds = true 
+0

Проверьте размер изображенияПросмотр. Вы используете свойство imageView ячейки. Этот размер имеет вид таблицы. Если вы добавили изображение в ячейку, выберите другое имя для него. Не могли бы вы показать код для ячейки? – dasdom

+0

@dasdom спасибо за ваш ответ. Я очень новичок в быстроте, поэтому прости меня. Я думаю, что я использую свойство imageView ячейки на основе кода да? Является ли размер не показан также в моем коде, т. Е. 190 на 190? – user2363025

+0

Нет, размер изображения. Вид ячейки представления таблицы задается размером ячейки. – dasdom

ответ

15

Если вы создаете свой собственный ImageView, то лучше установить cornerRadius внутри пользовательских TableViewCell.

class CircularTableViewCell: UITableViewCell { 
@IBOutlet weak var circularImageView: UIImageView! 
override func layoutSubviews() { 
    circularImageView.layer.cornerRadius = circularImageView.bounds.height/2 
    circularImageView.clipsToBounds = true 
} 

}

Примечание свойство cornerRadius не может гарантировать, что вид будет абсолютно круглая, если не установлено соотношение ширины и высоты в ImageView, чтобы быть 1: 1. Другой подход к созданию круглого вида - использование маски.

public extension UIView { 
public func round() { 
    let width = bounds.width < bounds.height ? bounds.width : bounds.height 
    let mask = CAShapeLayer() 
    mask.path = UIBezierPath(ovalInRect: CGRectMake(bounds.midX - width/2, bounds.midY - width/2, width, width)).CGPath 
    self.layer.mask = mask 
} 

}

Это позволит вам звонить круглые() с любым UIView и убедитесь, что точка зрения всегда округляет. например

class CircularTableViewCell: UITableViewCell { 
@IBOutlet weak var circularImageView: UIImageView! 
override func layoutSubviews() { 
    circularImageView.round() 
} 

}

+0

Как создать пользовательскую ячейку таблицы таблиц в доске объявлений? Любые учебники по этому или примерному коду? Примечание. Я заполняю таблицу ответом веб-службы, и у всех не будет изображения, связанного с ними. – user2363025

+0

Я загружаю простой проект, который вы можете скачать и изучить: https://github.com/vidaaudrey/CustomTableViewCell. В основном вам необходимо: 1. настроить ячейку прототипа в раскадровке, установить идентификатор и связать ячейку с соответствующим классом 2. создать пользовательский класс UITableviewCell 3. Настроить ячейку в UITableViewController для использования пользовательского класса UITabelViewCell. Если определенные ячейки различны, вы можете использовать два типа класса UITableViewCell или только дополнительный настраиваемый пользовательский класс UITableViewCell (добавлять или удалять представления, устанавливать разные заголовки и т. Д.) –

+0

спасибо за образец проекта. Посмотрите и сообщите назад – user2363025

1

Попробуйте дать статическое значение (половина ширины или высоты) в качестве угловых radius.This может решить вашу проблему.

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