来源:blog.sunnyxx.com/2015/04/15/…

实现诸如支付宝的 “探索” 页面时,最简单的方案是在 Storyboard 中来一个静态 Grouped UITableViewController,把各个 Cell 中的元素摆好就行了

不过会有下面的问题,第一个 Section 距离屏幕顶端有间隔

一行代码搞定

研究发现,这里其实是一个被 UITableView 默认填充的 HeaderView。而且,当试图将它的高度设置为 0 时,完全不起效果。但我们用下面的代码创建一个高度特别小的 HeaderView 时,上面的边距就不见了:

CGFLOAT_MIN这个宏表示 CGFloat 能代表的最接近 0 的浮点数,64 位下大概是 0.00(300左右个)0225 这个样子

这样写单纯的为了避免一个魔法数字,这里用0.1效果是一样的,后面再讲。

在 Storyboard 中 0 代码搞定

没用 Storyboard 的同学使用上面的代码就 OK 了; 而在 Storyboard 中可以 0 代码搞定这个事:

首先,在第一个 Section 的上面拖进来一个空 UIView

然后选中这个 UIView 的 Runtime Attributes 栏,添加一个frame的 KeyPath

这样头部的间隔就乖乖的不见了:

刨根问底 UITableViewHeader 的猫腻

为什么刚才说 0.1 和 CGFLOAT_MIN 是等效的呢?经过研究,这个高度值的影响大概是这样的:

若传入的 height == 0,则 height 被设置成默认值

若 height 小于屏幕半像素对应的高度,这个 header 不在另一个像素渲染

半像素也就是1.0 / scale / 2.0,如在 @2x 屏上是 0.25

直观的感受下,假如这个 height 被设置成 0.5 的样子:

身患强迫症的我是绝对不能容忍导航栏下面的阴影线看上去宽了 0.5 像素的,Done。

转载于:https://juejin.im/post/5a30f73f51882503eb4b4684

0代码隐藏GroupedTableView上边多余的间隔相关推荐

  1. ASP.NET 2.0 中的代码隐藏和编译

    ASP.NET 2.0 中的代码隐藏和编译      Fritz Onion 本页内容 代码隐藏 编译 程序集生成 小结 当我撰写本专栏的时候,Microsoft® .NET Framework 2. ...

  2. 打造0代码全自动GridView-天具神力

    20071015(新增单选列) 20071017更新(新增客户端设置列宽度) 20071021更新(新增自定义分页功能) 20071017更新(新增多选列DataKey支持) 20071105更新(修 ...

  3. Transformer学习总结附TF2.0代码实现

    Transformer学习总结附TF2.0代码实现 Transformer 1.Transformer详解 1.1 transformer总体架构 1.2 输入部分 1.3 Multi-Head At ...

  4. 这六段代码隐藏着深度学习的前世今生!

    这六段代码隐藏着深度学习的前世今生! 本文作者:晞萌 编辑:郭奕欣 2017-10-10 14:36 导语:六段代码解释了深度学习的前世今生,覆盖了深度学习几十年来的重大创新和突破. 雷锋网AI科技评 ...

  5. linux qt应用程序全屏,QT在ubuntu下实现界面全屏,侧边栏隐藏,上边栏隐藏【实例】...

    最近做一个Qt项目(ubuntu 14.04),需要将界面全屏,全屏之后,ubuntu侧边栏隐藏,上边栏也隐藏,只显示Qt的界面. 那么先介绍几个函数: Qt全屏显示函数:showFullScreen ...

  6. 什么方式可以通过影子系统传播恶意代码_将恶意代码隐藏在图像中:揭秘恶意软件使用的隐写术...

    概述 本周,许多Facebook用户都会发现,一些用户发布图片上出现了原本应该隐藏的图像标签.由此可以证明,图像可以携带大量表面上不可见的数据.实际上,Facebook和Instagram所使用的图片 ...

  7. 用RtlAdjustPrivilege来调整进程权限(VB6.0代码)

    论坛上有朋友说起RtlAdjustPrivilege这个函数,就查了一下,写了个声明与调用示例出来,方便下次调用. 程序代码 Option Explicit Private Declare Funct ...

  8. VB6监视/操作剪贴板示例(VB6.0代码)

    剪贴板的监视,需要先使用SetClipboardViewer设置某个句柄为剪贴板查看器的一员. 然后当剪贴板发生改变时,系统就会向这个句柄发送WM_DRAWCLIPBOARD消息. 只要使用子类化拦截 ...

  9. WPF基础之XAML----(XAML 根元素和 xmlns,事件和 XAML 代码隐藏)

    XAML 根元素和 xmlns 一个 XAML 文件只能有一个根元素,这样才能成为格式正确的 XML 文件和有效的 XAML 文件.通常,应选择属于应用程序模型一部分的元素(例如,为页面选择 Wind ...

最新文章

  1. iPhoneX快速适配,简单到你想哭。
  2. java安装_快速提示:Java中的ISO 8601持续时间
  3. 送给同事的5个新年计划
  4. java 类对象可以调用静态方法吗
  5. docker 安装入门
  6. NB-IOT(4)---移远NB-IOT BC26模块模组简介和实际应用方向详解
  7. 【论文写作】毕业论文写作套路之参考文献
  8. 通过python获取Arduino雨滴传感器模块的数据(PyMata3+MySQL)
  9. 修改数据库密码的多种方法
  10. android webview浏览pdf,android webview pdf查看
  11. impalahive大数据平台数据血缘与数据地图(四)-impala血缘架构图及功能介绍
  12. 1317_使用pyserial通过python读取串口数据显示的同时记录log文件
  13. 1个英文字母、1个汉字、标点符号各占几个字节
  14. 华为机试OD真题 javaScript和java 叠积木 堆积木
  15. Windows命令行解决8080端口被占用
  16. 第五人格服务器维护中怎么进游戏,第五人格游戏进不去黑屏怎么解决 第五人格游戏进不去黑屏解决攻略...
  17. 一款利用PIN管设计的可调衰减器
  18. 2021年多媒体技术圈年终事件大回顾
  19. CODE CHINA
  20. 三人行网络教育计算机二,三人行老师电脑版

热门文章

  1. HTML5中最重要的技术点有哪些
  2. 人工智能在塑造未来移动应用开发中的作用
  3. 详细解析RxAndroid的使用方式
  4. github上创建java项目简单操作
  5. poi各种jar包作用和导入
  6. nodejs爬虫基础(二)
  7. 多线程 之 生产者与消费者
  8. 程序员应该具备哪些素质
  9. openstack 报错
  10. myBatis连接MySQL报错误:No operations allowed after conn