[记录]用swift实现TableView中添加用户头像和右边显示时间
期间,需要去显示自定义的
然后要去确保右边显示
上边显示日期或对应文字:昨天
下边显示图片:开启免打扰模式
然后试了试:
enum UITableViewCellAccessoryType : Int {
case None
case DisclosureIndicator
case DetailDisclosureButton
case Checkmark
case DetailButton
}都没有符合要求的。
所以要去解决。
搜:
swift custom UITableViewCellAccessoryType
swift custom UITableViewCell AccessoryType
参考:
Swift tableView cell set accessory type – Stack Overflow
感觉是:
可以设置accessoryType为None,然后自定义accessoryView
去试试
然后是可以工作的:
cell.accessoryType = UITableViewCellAccessoryType.None
cell.accessoryView = UIView(frame: CGRectMake(0, 0, 48, 48))
cell.accessoryView?.backgroundColor = UIColor.greenColor()效果:
然后再去想办法:
自定义内部的view,
上面加个文字:显示时间
下面显示图片:显示防打扰
然后用代码:
cell.accessoryType = UITableViewCellAccessoryType.None
cell.accessoryView = UIView(frame: CGRectMake(0, 0, 48, 48))
//cell.accessoryView?.backgroundColor = UIColor.yellowColor()
let lastPublishTimeText = UILabel(frame: CGRectMake(0, 0, (cell.accessoryView?.bounds.size.width)!, 12))
lastPublishTimeText.text = "昨天"
lastPublishTimeText.textColor = UIColor.grayColor()
lastPublishTimeText.font = UIFont.boldSystemFontOfSize(10)
lastPublishTimeText.textAlignment = NSTextAlignment.Center
let preventDisturbIconView = UIImageView(image:UIImage(named:"prevent_disturb.png"))
preventDisturbIconView.frame = CGRectMake(
12,
12,
preventDisturbIconView.bounds.size.width,
preventDisturbIconView.bounds.size.height)
cell.accessoryView?.addSubview(lastPublishTimeText)
cell.accessoryView?.addSubview(preventDisturbIconView)效果是:
暂时凑合着可以显示了。
但是很明显:
accessory,离右边还是有点距离的-》所以要去搞懂,accessory如何靠最右对齐:
[无需解决]Swift中UITableView中让Cell的Accessory靠右对齐
以及:
对于前面加的cell.accessoryView的UIView内部,如何让一个label和一个Image的view,内部如何对齐父级的View,即cell.accessoryView:
[已解决]Swift中子View如何设置在父级View的对齐方式
[已解决]Swift中的UITableView中自定义UITableViewCellAccessoryType
期间,需要去:
对于cell的accessory的view中的:
上面的label
下面的image
两个view,设置子view在父view(accessory)中的对齐方式:
比如靠左或靠右对齐。
最后用代码:
cell.accessoryType = UITableViewCellAccessoryType.None
cell.accessoryView = UIView(frame: CGRectMake(0, 0, CGFloat(rowHeight), CGFloat(rowHeight)))
//cell.accessoryView?.backgroundColor = UIColor.yellowColor()
//let lastPublishTimeText = UILabel(frame: CGRectMake(0, 0, (cell.accessoryView?.bounds.size.width)!, 24))
let lastPublishTimeText = UILabel(frame: CGRectMake(0, 0, (cell.accessoryView?.bounds.size.width)!, CGFloat(rowHeight)/2))
lastPublishTimeText.text = "昨天"
lastPublishTimeText.textColor = UIColor.grayColor()
lastPublishTimeText.font = UIFont.boldSystemFontOfSize(10)
let preventDisturbIconView = UIImageView(image:UIImage(named:"prevent_disturb_16x24.png"))
preventDisturbIconView.frame = CGRectMake(
0, //32,
CGFloat(rowHeight)/2, //24,
//preventDisturbIconView.frame.size.width,
//preventDisturbIconView.bounds.size.width,
preventDisturbIconView.bounds.size.width,
//(cell.accessoryView?.bounds.size.width)!,
//preventDisturbIconView.bounds.size.height)
CGFloat(rowHeight)/2)
cell.accessoryView?.addSubview(lastPublishTimeText)
cell.accessoryView?.addSubview(preventDisturbIconView)
//both align center of accessory
lastPublishTimeText.textAlignment = NSTextAlignment.Center
preventDisturbIconView.center = CGPointMake(
(cell.accessoryView?.bounds.size.width)!/2,
preventDisturbIconView.bounds.size.height/2 + lastPublishTimeText.frame.size.height)
//both align right of accessory
lastPublishTimeText.textAlignment = NSTextAlignment.Right
preventDisturbIconView.frame.origin.x = (cell.accessoryView?.bounds.size.width)! - preventDisturbIconView.bounds.size.width效果如下:
[总结]
此处,想要自定义UITableView中的UITableViewCellAccessoryType,主要思路是:
设置为accessoryType为UITableViewCellAccessoryType.None
然后再去新建一个UIView给accessoryView
然后再去把其他自定义的子view加入到这个accessoryView中即可
示例代码:
cell.accessoryType = UITableViewCellAccessoryType.None cell.accessoryView = UIView(frame: CGRectMake(0, 0,80,55)) let lastPublishTimeText = UILabel(frame: CGRectMake(0, 0, (cell.accessoryView?.bounds.size.width)!, CGFloat(rowHeight)/2)) lastPublishTimeText.textColor = UIColor.grayColor() lastPublishTimeText.font = UIFont.boldSystemFontOfSize(10) let preventDisturbIconView = UIImageView(image:UIImage(named:"prevent_disturb_16x24.png")) preventDisturbIconView.frame = CGRectMake(0,27,80,27) //both align right of accessory lastPublishTimeText.textAlignment = NSTextAlignment.Right preventDisturbIconView.frame.origin.x = (cell.accessoryView?.bounds.size.width)! - preventDisturbIconView.bounds.size.width cell.accessoryView?.addSubview(lastPublishTimeText) cell.accessoryView?.addSubview(preventDisturbIconView)
供参考。
转载请注明:在路上 » [已解决]Swift中的UITableView中自定义UITableViewCellAccessoryType