直接上代码
import Foundation
import UIKit
class TableViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{
var backButton : UIButton!
var noticeButton : UIButton!
var personTableView:UITableView!
var itemAry = ["a","b","c"]
var sexAry = ["1","2","3"]
var contentAry = ["桃花坞里桃花庵,桃花庵下桃花仙;桃花仙人种桃树,又摘桃花换酒钱。酒醒只在花前坐,酒醉还来花下眠;半醒半醉日复日,花落花开年复年。但愿老死花酒间,不愿鞠躬车马前;车尘马足富者趣,酒盏花枝贫者缘。别人笑我太疯癫,我笑他人看不穿;不见五陵豪杰墓,无花无酒锄作田。—明·唐伯虎《桃花庵歌》","由注释可以看出,文本框的设置需要获得文字需要占用的尺寸,并且计算文本框占用的大小","311"]
override func viewDidLoad() {
println("load TableViewController")
super.viewDidLoad()
backButton=UIButton() //实例化
backButton.frame=CGRectMake(20,240,50,30)//大小、位置
backButton.backgroundColor=UIColor.redColor()//背景色
backButton.setTitle("Back",forState:UIControlState.Normal)//文本
backButton.addTarget(self,action:"back2Main:",forControlEvents:UIControlEvents.TouchUpInside)//事件
noticeButton=UIButton() //实例化
noticeButton.frame=CGRectMake(100,240,50,30)//大小、位置
noticeButton.backgroundColor=UIColor.redColor()//背景色
noticeButton.setTitle("Notice",forState:UIControlState.Normal)//文本
noticeButton.addTarget(self,action:"noticeAction:",forControlEvents:UIControlEvents.TouchUpInside)//事件
personTableView=UITableView()
personTableView.frame=CGRectMake(10, 40, 400, 300)
personTableView.dataSource=self
personTableView.delegate=self
personTableView.registerClass(PersonTableViewCell.self, forCellReuseIdentifier: "cell")//定义新的处理者
NSNotificationCenter.defaultCenter().addObserver(self, selector: "gameOver:", name: "gameOverNotification", object: nil)//定义提醒接收者
self.view.addSubview(backButton);
self.view.addSubview(noticeButton);
self.view.addSubview(personTableView);
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell = tableView.dequeueReusableCellWithIdentifier("cell") as PersonTableViewCell!
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
cell.selectedBackgroundView = nil
var row=indexPath!.row
cell.reloadCell(self.itemAry[row],sex: self.sexAry[row],content: self.contentAry[row])//加载数据
return cell
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int
{
return 3
}
func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath) -> CGFloat
{
//计算行高,返回,textview根据数据计算高度
var fixedWidth:CGFloat = 260;
var contextLab : UITextView=UITextView()
contextLab.text=contentAry[indexPath.row]
var newSize:CGSize = contextLab.sizeThatFits(CGSizeMake(fixedWidth, 123));
var height=(newSize.height)
println("height---\(height)")
return height+70
}
func back2Main(button: UIView) {
self.view.window?.rootViewController=ViewController()//切换视图
}
func noticeAction(button: UIView) {
NSNotificationCenter.defaultCenter().postNotificationName("gameOverNotification", object: title)//发出提醒
}
func gameOver(title:NSNotification)
{
let alert = UIAlertView()
alert.title = "计时完成!"
// var str = title.object as String
alert.message = "aaa"
alert.addButtonWithTitle("OK")
alert.show()
}
}
class PersonTableViewCell : UITableViewCell{
var IconImage : UIImageView?
var nameLab : UILabel?
var sexLab : UILabel?
var contextLab : UITextView?
var bgImage:UIImage?
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!){
super.init(style: style, reuseIdentifier: reuseIdentifier)
IconImage = UIImageView(frame:CGRectMake(10 , 1 , 60 , 60))
IconImage!.backgroundColor = UIColor.redColor()
self.addSubview(IconImage!)
nameLab = UILabel(frame:CGRectMake(70 , 1 , 100 , 20))
nameLab?.layer.borderWidth=2
self.addSubview(nameLab!)
sexLab = UILabel(frame:CGRectMake(70 , 21 , 30 , 20))
sexLab?.layer.borderWidth=1
self.addSubview(sexLab!)
contextLab = UITextView(frame:CGRectMake(10 , 65 , 260 , 50))
self.addSubview(contextLab!)
}
func reloadCell(name:String,sex:String,content:String){
nameLab!.text = name //NSString
sexLab!.text = sex //String
contextLab!.text = content //String
IconImage?.image=UIImage(named:"mainBack")
bgImage = UIImage(named:"BlueBubble2")
//计算行高,返回,textview根据数据计算高度变换高度
var fixedWidth:CGFloat = contextLab!.frame.size.width;
var newSize:CGSize = contextLab!.sizeThatFits(CGSizeMake(fixedWidth, 123));
println(newSize.height)
var newFrame:CGRect = contextLab!.frame;
newFrame.size = CGSizeMake(max(newSize.width, fixedWidth), newSize.height);
contextLab!.frame = newFrame;
}
}
- 大小: 130.9 KB
分享到:
相关推荐
在iOS应用开发中,Swift语言被广泛用于构建用户界面,特别是在创建复杂的表格视图(UITableView)时。本项目“swift-这是一个示例项目实现功能UITableViewCell动态高度基于自动布局”是针对Swift开发的一个实例,...
3. **添加自定义配置**:可能需要为`UITableView`添加一些额外的功能,比如分割线样式、行高计算等。这些都可以在自定义的`UITableView`子类中实现。 接下来,我们要将`MJRefresh`集成到自定义的`UITableView`中。`...
在iOS开发中,UITableView是一种非常重要的视图组件,它用于展示数据列表,广泛应用于各种应用场景,如联系人列表、消息列表等。这个“iOS-使用表格视图UITableView”项目可能是为了帮助开发者熟悉如何在实际应用中...
这个库的核心思想是将一个UITableView视为多个独立部分(或称为“区段”),每个部分可以有不同的行高、列数和自定义的布局规则,从而实现了比原生协议更灵活的布局效果。 在CascadingTableDelegate中,你可以定义...
在这个主题中,我们将深入探讨如何使用Swift语言、自动布局约束以及大小类来有效地实现`UITableView`。首先,让我们理解这三个核心概念: 1. **Swift语言**:Swift是Apple在2014年推出的一种现代化编程语言,旨在...
在Swift中,为了实现`UITableView`的自动调整行高,我们需要使用`estimatedRowHeight`和`rowHeight`属性。设置`estimatedRowHeight`为一个合理的预估值,用于优化滚动性能,而`rowHeight`设置为`UITableView....
Swift作为Apple的官方编程语言,提供了多种方式来创建自定义的用户界面,其中包括UITableView和UICollectionView。本篇将深入探讨如何利用这两种视图控件来构建一个自定义的网格组件——GridView。 ### 一、...
"swift-tableview抽屉点击cell弹出n个子cell依次类推支持cell行高自适应"这个项目就是一个典型的例子,它展示了如何通过自定义UITableView实现独特的交互效果。在iOS应用中,UITableView是一种常用的控件,用于展示...
在处理具有不同内容长度的单元格时,自动调整行高的功能尤为重要。本实例"UITableVIew 自适应高度实例"正是针对这一需求,提供了一种简单的方法来实现动态高度。 首先,我们要理解在UITableView中自适应高度的重要...
此外,UITableView还支持动态高度,即根据内容自动调整行高。只需在`tableView(_:heightForRowAt:)`返回相应的高度即可。 ```swift func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath...
在iOS应用开发中,Swift语言提供了丰富的UI控件来构建用户友好的界面。"swift-iOS城市选取控制器"是一个特定的UI组件,用于帮助用户在众多城市中选择他们需要的城市。这种控制器通常会包含一个可滚动的列表,展示...
在iOS开发中,Swift语言是Apple官方推荐的编程语言,用于构建各种应用程序,包括界面丰富的应用。本压缩包“ios-swift---tableview.zip”显然关注的是如何在Swift中使用UITableView来创建动态、可滚动的数据展示视图...
在iOS开发中,自定义`UITableViewCell`是一种常见的需求,它能让我们实现更加复杂且具有特色的界面展示。本教程将深入探讨如何通过代码自定义`cell`,并动态设置其行高,以适应不同内容的显示需求。这个过程适用于...
这个“UITableView Demo实例”是针对如何有效地使用UITableView进行编程的一个示例项目,它涵盖了创建表格视图、定义单元格样式、处理用户交互等多个核心知识点。 首先,我们来详细讨论UITableView的基本使用。...
通过研究这个示例项目,开发者不仅可以学习到如何实现图文混排的TableViewCell,还能了解如何在Swift中处理图片自适应、优化TableView性能以及实现多种编辑功能。这对于提升iOS开发技能是非常有帮助的。
在这个教程中,我们将探讨UITableView的基础知识、使用方法以及如何在Swift或Objective-C中实现它。 UITableView主要由两部分组成:数据源(dataSource)和委托(delegate)。数据源是应用中提供数据的对象,负责...
- 在SwiftUI中,List视图类似UITableView,但API和使用方式有所不同,不过依然可以结合UIKit实现更复杂的表格视图。 通过分析这个压缩包,开发者可以从源码中学习到如何在实际项目中应用这些概念和技术,理解数据...
`systemLayoutSizeFitting`会计算出在最紧凑的情况下(即不考虑任何内边距)视图需要的大小,所以通常我们需要加上cell的其他部分(如分割线、内边距等)的高度。 此外,为了保证性能,避免每次显示cell都进行计算...
总之,要实现“iOS中让TableViewCell根据内容自适应高度”,关键在于利用Auto Layout设置约束,通过UITableView的动态行高特性,以及正确实现数据源方法来计算和返回自适应的高度。同时,要注意性能优化,确保在各种...
在iOS开发中,为了提供优秀的用户体验,我们常常需要让UITableView的Cell能够根据其内容自动调整高度,这被称为“Cell自适应”。SDAutoLayout是一个强大的自动布局库,它可以帮助开发者更轻松地实现Cell的高度自适应...