最简单的UITableView,为什么表头总是从(0,0)开始的

「已注销」 2015-04-02 06:32:45
我做了一个最简单的UITableView,可是,做出来以后,表头(tableHeaderView)把 时间 电池 信号 都盖住了,很显然表头的坐标是从(0,0)开始的,我希望放下面一点,不把它盖住,怎么弄呢?

class TableViewController: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()


var ta:UILabel = UILabel(frame: CGRectMake(0, 29,self.view.frame.width, 25))
ta.text = "5"
ta.backgroundColor = UIColor.blueColor()
tableView.tableHeaderView = ta

tableView.tableHeaderView?.frame = CGRectMake(0, 29, self.view.frame.width ,25)

tableView.registerClass(UITableViewCell.self,forCellReuseIdentifier: "reuseIdentifier")
}
...全文
225 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2015-04-17
  • 打赏
  • 举报
回复
引用 3 楼 c00216863 的回复:
建议楼主先看下iOS7及以上系统的平台特性吧, view都是从屏幕左上角还是布局,会被状态栏覆盖的 我想多问个问题,你的UITableViewController是单独使用的么?不在UINavigationController里么?顶部没有UINavigationBar,只空一个状态栏的高度出来,页面不丑么?
我这里的情况是:不是从UINavigationBar来的,为什么一定要从UINavigationBar来呢?我可以从任何一个UIViewController present出来嘛,有时候感觉没有必要加那个UINavigationController,我就是想解决这种情况下的UITableViewController太丑的问题,所以想加个label。
ReyZhang 2015-04-17
  • 打赏
  • 举报
回复
引用 3 楼 c00216863 的回复:
建议楼主先看下iOS7及以上系统的平台特性吧, view都是从屏幕左上角还是布局,会被状态栏覆盖的 我想多问个问题,你的UITableViewController是单独使用的么?不在UINavigationController里么?顶部没有UINavigationBar,只空一个状态栏的高度出来,页面不丑么?
iOS 7 以后 uitableview的frame起始点是改为了(0,0). 上面的回答是有出处。使用
self.edgesForExtendedLayout = UIRectEdgeNone;
这种情况适用于容器建立在UINavigationController 上。也就是说,如果UITableView被UINavigationController包装后位置会在导航条下方始而不会被statusbar覆盖,反之,如果不加这句还是会被覆盖。
c00216863 2015-04-16
  • 打赏
  • 举报
回复
建议楼主先看下iOS7及以上系统的平台特性吧, view都是从屏幕左上角还是布局,会被状态栏覆盖的 我想多问个问题,你的UITableViewController是单独使用的么?不在UINavigationController里么?顶部没有UINavigationBar,只空一个状态栏的高度出来,页面不丑么?
「已注销」 2015-04-04
  • 打赏
  • 举报
回复
引用 1 楼 zhanglei5415 的回复:
在viewcontroller 的 viewdidload 中加入如下代码
self.edgesForExtendedLayout = UIRectEdgeNone;
我加了,代码如下: override func viewDidLoad() { super.viewDidLoad() self.edgesForExtendedLayout = .None; var ta:UILabel = UILabel(frame: CGRectMake(0, 29,self.view.frame.width, 25)) ta.text = "5" ta.backgroundColor = UIColor.blueColor() tableView.tableHeaderView = ta tableView.tableHeaderView?.frame = CGRectMake(0, 29, self.view.frame.width ,25) tableView.registerClass(UITableViewCell.self,forCellReuseIdentifier: "reuseIdentifier") self.edgesForExtendedLayout = .None; } 可是,还是没有什么变化,还是盖住,我觉得这个问题应该是有办法解决的,tableHeaderView里装着电池、信号、时间,这多丑啊,可是就是挪不下来,请问还能帮我想想办法吗?(当然我有个办法,就是不用UITableViewController,而是直接用UITableView,可是我觉得UITableViewController,不会这么简单的需要都无法实现吧)
ReyZhang 2015-04-03
  • 打赏
  • 举报
回复
在viewcontroller 的 viewdidload 中加入如下代码
self.edgesForExtendedLayout = UIRectEdgeNone;

1,420

社区成员

发帖
与我相关
我的任务
社区描述
Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。
swift 技术论坛(原bbs)
社区管理员
  • Swift
  • 网罗开发
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧