Swift之自定义UITableViewCell
2017-06-16 21:30
190 查看
主要是在重写父类的init(style:UITableViewCellStyle, reuseIdentifier:String?)中添加要实现的部分,比如下面在cell中添加几个Label,获取改变原有cell中subViews子控件的位置坐标、字体颜色、背景颜色等等。
import UIKit
class HomeTableViewCell: UITableViewCell {
var addressView:UIView?
var addressLabel:UILabel?
var distanceLabel:UILabel?
required init?(coder aDecoder:NSCoder) {
super.init(coder: aDecoder)
}
override init(style:UITableViewCellStyle, reuseIdentifier:String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.setUpUI();
}
func setUpUI()
{
self.addressView = UIView(frame: CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: 25))
self.addressLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 25))
self.addressLabel?.textColor = UIColor.lightGray
self.addressLabel?.font = UIFont.systemFont(ofSize: 15)
self.distanceLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 25))
self.distanceLabel?.textColor = UIColor.lightGray
self.distanceLabel?.font = UIFont.systemFont(ofSize: 15)
self.distanceLabel?.textAlignment = .right
self.addressView?.addSubview(self.addressLabel!)
self.addressView?.addSubview(self.distanceLabel!)
self.addSubview(self.addressView!)
self.detailTextLabel?.textColor = UIColor.lightGray
}
override func layoutSubviews() {
super.layoutSubviews()
// let imgHeight:CGFloat = (self.imageView?.frame.size.height)!
// let imgyy:CGFloat = (self.bounds.size.height - imgHeight * 0.9)/2
// var imgRect = self.imageView?.frame
// imgRect?.origin.y = imgyy
// imgRect?.size = CGSize(width: imgHeight * 0.9, height: imgHeight * 0.9)
// self.imageView?.frame = imgRect!
//
// self.imageView?.layer.borderWidth = 0.3
// self.imageView?.layer.borderColor = UIColor.white.cgColor
// self.imageView?.layer.cornerRadius = imgHeight/2
let cellHeight = self.bounds.size.height
//detailTextLabel origin y
var detailLabelRect = self.detailTextLabel?.frame
let detailY = (cellHeight - (detailLabelRect?.size.height)!) / 2
detailLabelRect?.origin.y = detailY
self.detailTextLabel?.frame = detailLabelRect!
//textLabel rect
var textRect = self.textLabel?.frame
textRect?.origin.y = detailY - 5 - (textRect?.size.height)!
self.textLabel?.frame = textRect!
//addressView rect
let addrViewX = detailLabelRect?.origin.x
let addrViewY = (detailLabelRect?.origin.y)! + (detailLabelRect?.size.height)! + 3
let addrViewWidth = SCREEN_WIDTH - addrViewX!
self.addressView?.frame = CGRect(x: addrViewX!, y: addrViewY, width: addrViewWidth, height: 25)
let disLabelX = (self.addressLabel?.frame.size.width)! - 110
var disLabelRect = self.distanceLabel?.frame
disLabelRect?.origin.x = disLabelX
self.distanceLabel?.frame = disLabelRect!
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
import UIKit
class HomeTableViewCell: UITableViewCell {
var addressView:UIView?
var addressLabel:UILabel?
var distanceLabel:UILabel?
required init?(coder aDecoder:NSCoder) {
super.init(coder: aDecoder)
}
override init(style:UITableViewCellStyle, reuseIdentifier:String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.setUpUI();
}
func setUpUI()
{
self.addressView = UIView(frame: CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: 25))
self.addressLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 25))
self.addressLabel?.textColor = UIColor.lightGray
self.addressLabel?.font = UIFont.systemFont(ofSize: 15)
self.distanceLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 25))
self.distanceLabel?.textColor = UIColor.lightGray
self.distanceLabel?.font = UIFont.systemFont(ofSize: 15)
self.distanceLabel?.textAlignment = .right
self.addressView?.addSubview(self.addressLabel!)
self.addressView?.addSubview(self.distanceLabel!)
self.addSubview(self.addressView!)
self.detailTextLabel?.textColor = UIColor.lightGray
}
override func layoutSubviews() {
super.layoutSubviews()
// let imgHeight:CGFloat = (self.imageView?.frame.size.height)!
// let imgyy:CGFloat = (self.bounds.size.height - imgHeight * 0.9)/2
// var imgRect = self.imageView?.frame
// imgRect?.origin.y = imgyy
// imgRect?.size = CGSize(width: imgHeight * 0.9, height: imgHeight * 0.9)
// self.imageView?.frame = imgRect!
//
// self.imageView?.layer.borderWidth = 0.3
// self.imageView?.layer.borderColor = UIColor.white.cgColor
// self.imageView?.layer.cornerRadius = imgHeight/2
let cellHeight = self.bounds.size.height
//detailTextLabel origin y
var detailLabelRect = self.detailTextLabel?.frame
let detailY = (cellHeight - (detailLabelRect?.size.height)!) / 2
detailLabelRect?.origin.y = detailY
self.detailTextLabel?.frame = detailLabelRect!
//textLabel rect
var textRect = self.textLabel?.frame
textRect?.origin.y = detailY - 5 - (textRect?.size.height)!
self.textLabel?.frame = textRect!
//addressView rect
let addrViewX = detailLabelRect?.origin.x
let addrViewY = (detailLabelRect?.origin.y)! + (detailLabelRect?.size.height)! + 3
let addrViewWidth = SCREEN_WIDTH - addrViewX!
self.addressView?.frame = CGRect(x: addrViewX!, y: addrViewY, width: addrViewWidth, height: 25)
let disLabelX = (self.addressLabel?.frame.size.width)! - 110
var disLabelRect = self.distanceLabel?.frame
disLabelRect?.origin.x = disLabelX
self.distanceLabel?.frame = disLabelRect!
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
相关文章推荐
- 自定义UITableViewCell分割线不显示或粗细不同的原因
- UITableViewCell自定义分割线
- Swift UITableViewCell点击展开
- 自定义UITableViewCellAccessoryCheckmark
- UITableView cell自定义视图中插入UITableView
- 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度
- iOS UITableViewCell重用以及自定义Cell
- IOS Swift3.0 TableViewCell自定义高度
- Swift-AutoLayout system UITableViewCell
- Swift编程(一):UITableView及自定义Cell的Xib
- Swift TableView自定义Cell的高度
- IOS uitableviewcell 左滑 自定义
- swift UITableViewCell拷贝
- iOS-UITableViewCell自定义分割线
- swift UICollectionView 代码创建 和自定义Cell
- Swift练习小demo tableView 自定义cell 简单实用
- [IOS]swift自定义uicollectionviewcell
- UITableView 系列: 自定义 UITableViewCell
- iOS开发15:自定义UITableViewCell
- 代码自定义UITableViewCell