Не могу заставить радиус угла работать

Привет, я программирую приложение для чата, и я не хочу, чтобы изображения профиля имели угловой радиус. Это мой код. Кстати, я использую Parse в качестве бэкэнда.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell

    var imageView = PFImageView()
    let user = self.users[indexPath.row]
    imageView.layer.cornerRadius = imageView.frame.size.width / 2
    imageView.layer.masksToBounds = true
    imageView.file = user[PF_USER_PICTURE] as? PFFile
    cell.textLabel?.text = user[PF_USER_FULLNAME] as? String
    cell.textLabel?.font = UIFont.boldSystemFontOfSize(24)
    cell.imageView?.image = imageView.image



    return cell
}

ОБНОВЛЕНИЕ: проблема заключалась в том, что у моего cell.imageview не было рамки. Спасибо за ответ Макс К!


person Johan Enstam    schedule 09.03.2015    source источник


Ответы (4)


Вы применили angleRadius к слою imageView, созданному здесь:

var imageView = PFImageView()

Но тогда вы используете только его свойство image и назначаете его ячейке imageView:

cell.imageView?.image = imageView.image

Примените cornerRadius к ячейке imageView.

person Wojciech Rutkowski    schedule 09.03.2015
comment
Когда я пытаюсь это сделать, я получаю эту ошибку: «UIImageView» не имеет члена с именем «cornerRadius» — - person Johan Enstam; 09.03.2015
comment
Применить к слою, но слою imageView ячейки, а не тому, который вы создали. - person Wojciech Rutkowski; 09.03.2015
comment
Я пробовал с cell.imageView?.layer.cornerRadius = imageView.frame.size.width / 2, и это не дает мне ошибки, но изображение все еще квадратное - person Johan Enstam; 09.03.2015
comment
@JohanEnstam в вашем исходном коде imageView (PFImageView) не имеет установленного фрейма, поскольку вы не добавили его на экран и не установили фрейм явно - person Max Komarychev; 09.03.2015
comment
Ок, а как мне установить рамку? - person Johan Enstam; 09.03.2015

var imageView = PFImageView()

это другой вид изображения, чем:

cell.imageView?.image = imageView.image

На экране отображается изображение вашей ячейки, а не этот экземпляр PFImageView. Если вы хотите иметь PFImageView в качестве класса представления изображения вашей ячейки, вам нужно установить это либо в раскадровке, либо путем создания подкласса вашей ячейки.

person graver    schedule 09.03.2015

Вы устанавливаете cornerRadius на imageView, который позже не добавляется на экран.

Вы должны установить его на cell.imageView

if let imageView = cell.imageView {
    imageView.layer.cornerRadius = imageView.frame.size.width / 2
}
person Max Komarychev    schedule 09.03.2015
comment
Когда я пытаюсь это сделать, я получаю эту ошибку: «UIImageView» не имеет члена с именем «cornerRadius». - person Johan Enstam; 09.03.2015
comment
@JohanEnstam, мой плохой, конечно, это должно быть imageView.layer.cornerRadius. Смотрите обновленный пост. - person Max Komarychev; 09.03.2015

Вы добавляете угол к imageView в

переменная imageView = PFImageView()

Вместо этого добавьте угол к cell.imageView. Похоже, вы используете PFImageView для загрузки изображения из файла. Таким образом, вы можете изменить код, например

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

let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell

var imageView = PFImageView()
let user = self.users[indexPath.row]
cell.imageView.layer.cornerRadius = imageView.frame.size.width / 2
cell.imageView.layer.masksToBounds = true
imageView.file = user[PF_USER_PICTURE] as? PFFile
cell.textLabel?.text = user[PF_USER_FULLNAME] as? String
cell.textLabel?.font = UIFont.boldSystemFontOfSize(24)
cell.imageView?.image = imageView.image

return cell
}

Или сделайте imageView из cell.imageView как PFImageView

person abintom    schedule 09.03.2015