2016-01-23 3 views
0

Я создаю объект UITableViewCell и возвращаю его внутри cellForRowAtIndexPath Функция в tableView. У меня есть UIView в ячейке, которую я хочу сделать круговой. Использование кода из this link, я написал следующий код:Нельзя добавить круговую маску в tableView

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


    let cell = UITableViewCell() 

    let containerDP = UIView() 
    containerDP.backgroundColor = UIColor.redColor() 

    // some code 

    let firstLetter = UILabel() 
     firstLetter.backgroundColor = UIColor.yellowColor() 
        firstLetter.text = (data[indexPath.row].UserObject.FirstName! as String).uppercaseString[0] 

     firstLetter.font = UIFont(name: firstLetter.font.fontName, size: 50) 
     firstLetter.adjustsFontSizeToFitWidth = true 
     firstLetter.textAlignment = NSTextAlignment.Center 

     firstLetter.layer.cornerRadius = firstLetter.frame.size.width/2; 
     firstLetter.clipsToBounds = true 

     containerDP.addSubview(firstLetter) 
     firstLetter.snp_makeConstraints { (make) -> Void in 
      make.center.equalTo(containerDP) 
      make.edges.equalTo(containerDP).inset(UIEdgeInsetsMake(10, 10, 10, 10)) 

     } 

     // some code 


    return cell 

    } 

Но до сих пор нет круговой маски:

enter image description here

+1

вы пытались masktoBounds = истинный – Mohamad

+1

вы импортировали Рамочную QuartzCore –

+0

@MohamadFarhand: да, до сих пор не работает – Vishal

ответ

0

Попробуйте это:

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


    let cell = UITableViewCell() 

    let containerDP = UIView() 
    containerDP.backgroundColor = UIColor.redColor() 

    // some code 

    let firstLetter = UILabel() 
     firstLetter.backgroundColor = UIColor.yellowColor() 
        firstLetter.text = (data[indexPath.row].UserObject.FirstName! as String).uppercaseString[0] 

     firstLetter.font = UIFont(name: firstLetter.font.fontName, size: 50) 
     firstLetter.adjustsFontSizeToFitWidth = true 
     firstLetter.textAlignment = NSTextAlignment.Center 

     firstLetter.layer.cornerRadius = firstLetter.frame.size.width/2; 
     firstLetter.layer.masksToBounds = true 
     firstLetter.clipsToBounds = true 

     containerDP.addSubview(firstLetter) 
     firstLetter.snp_makeConstraints { (make) -> Void in 
      make.center.equalTo(containerDP) 
      make.edges.equalTo(containerDP).inset(UIEdgeInsetsMake(10, 10, 10, 10)) 

     } 

     // some code 


    return cell 

    } 
+0

Использование firstLetter.layer.masksToBounds = true и firstLetter.clipsToBounds = true также не работает – Vishal

+0

Вы используете AutoLayout? – technerd

+0

Я использую [snapkit] (http://snapkit.io/) – Vishal

0
  1. Использование dequeueReusableCellWithIdentifier для создания и кеширования tablewView
  2. сделать подвид установки для tableViewCell в awakeFromNib методом
  3. С clipsToBounds = true он должен работать
+0

Мне нужно создать его динамически – Vishal

+0

Создайте этот ярлык по умолчанию в ячейке и скройте его или создайте новый тип ячейки. Но создание tableViewCell каждый раз в cellForRowAtIndexPath неверно. – shpasta

0
  • сначала вы должны создать customtableviewCell класс для Tableview.
  • затем сделать IBOutlet подключение к вашему cutomtablviewCell
  • затем #import ваш customtablviewCell к вашему tableviewController
  • затем внутри метода cellForRowAtIndexPath (я хорошо ObjectiveC, не стрижа) позвонить в ваш cutomTableviewcell, как показано ниже

    customTableviewCell * cell = [ваш код здесь];

  • после этого сделать ваши стили как

    cell.fisrtLetter.layer.cornerRadius = cell.firstletter.frame.size.width/2; cell.firstLetter.layer.masksToBounds = true;

  • , пожалуйста, примите эту идею.

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