首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UISearchController关闭后,UITableView标头大小发生更改

UISearchController是iOS开发中的一个控件,用于在界面中添加搜索功能。当UISearchController关闭后,UITableView标头大小发生更改的原因是UISearchController在关闭时会将搜索框从UITableView的表头移除,导致表头的大小发生变化。

为了解决这个问题,可以在关闭UISearchController时重新设置UITableView的表头大小,使其恢复到关闭前的状态。具体的实现可以通过以下步骤进行:

  1. 在UIViewController中创建一个UISearchController的实例,并将其设置为当前界面的搜索控制器。
  2. 在UISearchController的代理方法中,监听搜索控制器的状态变化。
  3. 当搜索控制器状态变为inactive(即关闭状态)时,重新设置UITableView的表头大小。
  4. 在重新设置表头大小时,可以使用UITableView的tableHeaderView属性来设置一个自定义的表头视图,或者使用UITableViewDelegate的tableView:viewForHeaderInSection:方法来设置一个自定义的表头视图。

以下是一个示例代码:

代码语言:swift
复制
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchControllerDelegate, UISearchBarDelegate {

    @IBOutlet weak var tableView: UITableView!
    var searchController: UISearchController!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 初始化UISearchController
        searchController = UISearchController(searchResultsController: nil)
        searchController.delegate = self
        searchController.searchBar.delegate = self
        searchController.searchBar.placeholder = "搜索"
        searchController.obscuresBackgroundDuringPresentation = false

        // 将UISearchController的搜索框添加到UITableView的表头
        tableView.tableHeaderView = searchController.searchBar

        // 设置UITableView的代理和数据源
        tableView.delegate = self
        tableView.dataSource = self
    }

    // UISearchController的代理方法
    func didDismissSearchController(_ searchController: UISearchController) {
        // UISearchController关闭后重新设置UITableView的表头大小
        tableView.tableHeaderView = searchController.searchBar
    }

    // 其他UITableView的代理和数据源方法...

}

在这个示例中,当UISearchController关闭后,didDismissSearchController方法会被调用,我们在这个方法中重新将搜索框添加到UITableView的表头,从而恢复表头的大小。

对于UITableView标头大小发生更改的问题,腾讯云并没有直接相关的产品或服务。但腾讯云提供了丰富的云计算解决方案,包括云服务器、云数据库、云存储等,可以帮助开发者构建稳定、可靠的云计算应用。具体的产品和服务信息可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你可能需要为你的 APP 适配 iOS 11

但也有的可能会给目前的APP带来异常bug 前言 前几天发现在做的APP在 iOS11 系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化执行的...,异常动画发生在tableView reloadData之后,也就是说tableView reloadData之后,tableView的contentOffset发生了几次变化。...把你的UISearchController赋值给navigationItem,就可以实现将UISearchController集成到Navigation。...iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的) self.tableView.estimatedRowHeight = 0; self.tableView.estimatedSectionHeaderHeight...我写demo测试的时候,因为每个cell的高度都较小,所以只显示image,然后我增加cell的高度,就可以同时显示image和title了。见下图对比: ?

1.6K60

你可能需要为你的 APP 适配 iOS11

前言 前几天发现在做的APP在iOS11系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化执行的,异常动画发生在tableView reloadData...之后,也就是说tableView reloadData之后,tableView的contentOffset发生了几次变化。...把你的UISearchController赋值给navigationItem,就可以实现将UISearchController集成到Navigation。...iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的) iOS11下,如果没有设置estimateRowHeight的值,也没有设置rowHeight...我写demo测试的时候,因为每个cell的高度都较小,所以只显示image,然后我增加cell的高度,就可以同时显示image和title了。

2.4K00

你可能需要为你的APP适配iOS11

前言 前几天发现在做的APP在iOS11系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化执行的,异常动画发生在tableView reloadData...之后,也就是说tableView reloadData之后,tableView的contentOffset发生了几次变化。...把你的UISearchController赋值给navigationItem,就可以实现将UISearchController集成到Navigation。...iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的) iOS11下,如果没有设置estimateRowHeight的值,也没有设置rowHeight...我写demo测试的时候,因为每个cell的高度都较小,所以只显示image,然后我增加cell的高度,就可以同时显示image和title了。

81420

手把手带你撸一个网易云音乐首页(三)

关于 headView 的实现方式,想必使用过 UITableView 的同学都不会陌生,可以通过下面的方法来实现: - (nullable UIView *)tableView:(UITableView...其实当你动手实践,你会发现这样实现后会有一个非常头疼的 bug,那就当 item 滚动的时候会出现遮挡,这用户体贴也太差了。...proposedContentOffset 记录了滚动的目标位移坐标,通过这个坐标和记录的上次滚动的坐标可以判断出是向左滚动还是向右滚动 如果俩坐标的水平方向相减的绝对值大于某个固定值(譬如说 item 宽度的 8 分之一),则可以判断发生了分页...,然后通过 proposedContentOffset 位移坐标和 item 的宽度大小来计算出当前滚动的页码;如果小于那个固定值,则不发生分页 最后记录最新的偏移坐标,然后返回 UICollectionView...不过,由于搜索栏需要自定义一些样式,我们可以先定义一个 UISearchController 的成员变量,将它的属性初始化好以后,再进行赋值,代码如下: self.searchController

2.3K10

NAT Slipstreaming攻击使防火墙形同虚设

NAT Slipstreaming,利用诱骗了受害人访问可能受到黑客控制的网站,则允许攻击者绕过受害人的网络地址转换(NAT)或防火墙安全控制,远程访问绑定到受害者计算机的任何TCP/UDP服务。...这种攻击利用了对某些TCP和UDP数据包的数据部分的任意控制的优势,而没有包括HTTP或其他头。...在检测到的子网(/ 24)上的所有IP上重新执行定时攻击,以衡量发生错误/成功触发的时间 i....服务器检测到并发送回受害者浏览器的受害者MTU大小,IP头大小,IP数据包大小,TCP报头大小,TCP段大小,稍后用于数据包填充 5.以新的隐藏形式生成的“ SIP数据包”,包含用于触发应用程序级别网关连接跟踪的内部...如果浏览器由于任何其他原因更改了多部分/表单边界(Firefox)的大小或数据包大小更改,则大小更改会传达回客户端,并且客户端会以新大小自动重新发送 e.

76820

Ios常用第三方框架(二)

HBHorizontalTableView - swift,TableView 横向滚动示例(仿照 AppStore 应用展示)。...LxTabBarController - 改变了原生tabbar切换tab时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予以关闭),swift版本。...UITableView-FDTemplateLayoutCell - UITableView-FDTemplateLayoutCell 是一个方便缓存 UITableViewCell 的高度的框架。...FDStackView - 可以将 UIStackView 的最低支持版本拉低到 iOS6,无需配置,没有代码侵染,扔到工程里直接用系统 UIStackView 的 API 即可,同时兼容 Storyboard...YX_UITableView_IN_UITableView - UITableview嵌套UITableView案例实践(仿淘宝商品详情页实现),项目讲解。

7.7K60

Ubuntu下Redis密码设置问题及其解决方案

这里成功进入Redis配置文件redis.conf如下图示: 更改了密码在命令模式下执行 wq! 保存修改并退出。...如下图 :) 出现错误提示: 没办法覆盖合并啊呜想直接进行密码操作,发现竟然强制不能进行修改了。哭哭! 如下图实例,最后强制退出结束了这场摸索。...1和圈2色的两个redis服务进程。...因为我小偷懒每次运行Redis服务都不指明配置文件结果造成更改配置文件但是其实是木有使用修改的配置文件。...一切顺利~ 终于解决了这个心头大患! 4.注意修改配置文件完成,一定要重启Redis服务器! 如下图可见服务器已经关闭。 啊!怎么就2点多了! 晕晕, 要睡觉啦!

3K40

关于 MVC 的一个常见的误用

虽然看起来这是很不起眼的变更,但是会在项目复杂带来麻烦。 也许你现在并不觉得有什么问题,让我们来假设一些情景,你可以思考一下如何实现吧。...是不是突然感觉有些头大? 改善 这些问题的来源其实都是我们为了“省事”,选择了一个不那么有效的 Model,以及存在风险的数据流动方式。或者说,我们没有正确和严格地使用 MVC 架构。...**diff** 方法通过比较原始 **items** 和当前 **items** 来确定发生了哪种 **ChangeBehavior**。...这个例子的修改的最终版本可以在这里找到。 其他选项 MVC 本身的概念相当简单,同时它也给了开发者很大的自由度。...完全理解和严格遵守 MVC 的思想,我们其实也可以将 MVC 用得“而美”。

89450

【iOS开发】在 App 中加入 AdMob 广告 - 入门介绍与编程技巧

前言 虽然在App中加入广告来盈利是比较低级的商业化方式,但对于个人开发者或者团队开发者来说,做出一个简单易用的免费小工具(举个栗子),在里面加入一些广告,如果用的人多,也是可以带来一些可观的收入的...而插页式广告则是以弹窗的形式出现,用户需要去左上角或者右上角点击一下关闭按钮才行,应该说是比横幅式广告要更讨厌一些(反正我是这么觉得的),应该说这是略为严重的打扰了用户对App的使用的。...这样在用户一直向上拖拽 UITableView 直到尽头的时候,可以让它的可拖拽区域比之前大一些,就不至于让广告遮挡了 UITableView 的最后几行。...UITableView 的 frame 调,来给广告空出位置。...下面给出一段示例代码,这里的广告展示逻辑是:每60秒展示一次广告,如果到了这个时刻,广告没加载好,就设置定时器每3秒查看一次广告资源是否就绪,直到广告加载好了,展示广告,然后设置60秒出现下一次广告。

4.1K30

1-3 Winform 中的常用控件(

图1-8 员工信息录入窗体目标界面 u 实验步骤(1): 由图1-9所示,从工具箱之中拖拽具体的控件到Form窗体上,并更改标签对象和按钮的text属性为图1-8所内容。...“添加”、“取消”和“关闭”按钮的鼠标单击事件详细代码加下: 实验:添加功能源代码: private void button1_Click(object sender, EventArgs e)        ...隐藏控件,调用该方法时,即使 Visible 属性设置为 True,控件也不可见 Show 相当于将控件的 Visible 属性设置为 True 并显示控件 事件 说明 Click 用户单击控件时将发生该事件...案例学习:标签控件的隐藏,窗口打开与关闭 本次实验目标是建立两个窗体,当点击图1-11的登录系统时候,可以打开另一个窗体,在点击文字打开显示学校名称,点击文字隐藏时候隐藏学校名称。...图1-11 窗口打开与关闭窗体目标界面 u 实验步骤(1): 由图1-11所示,从工具箱之中拖拽标签控件和linkLabel超链接文本控件到Form窗体上,更改标签文本的颜色、字体和大小属性,填写每个控件的

2.7K10

在iOS中怎样创建可展开的Table View?(下)

(记住,不是实际的indexPath.row)而是可见cell的行索引,所以我们将会开始在下面的tableView代理方法里给它分配一个局部变量: func tableView(tableView: UITableView...shouldExpandAndShowSubRows = true } } } 一旦上面的标示取到了它的值和属性,来指示这个cell展开或是关闭,把这个cell的描述符集合保存到那个值里是我们的工作...现在运行app.顶层的cell可以在点击之后展开或是合拢了,尽管点击子cell还没有发生任何改变,但结果令人印象深刻. ?...如果你现在运行app,你将会看到当选中一个喜欢的运动或颜色,app的响应. ?...primaryTitle") tblExpandable.reloadData() } 最后,是控制"Work Experience"组的滑块控件的cell.当用户改变了滑块的值,我们想要两件事情同时发生

1.5K30

python自动化办公:玩转word之页眉页脚秘笈

编给大家推荐一个学习氛围超好的地方,python交流企鹅裙:【611+530+101】适合在校大学生,小白,想转行,想通过这个找工作的加入。...另请注意,添加内容(甚至只是访问header.paragraphs)的行为添加了头定义并更改了以下状态.is_linked_to_previous: >>> header.is_linked_to_previous...这种添加头定义是在第一次访问头内容时发生的,可能是通过引用 header.paragraphs。...请注意,以这种方式保留标题偶尔会有用,因为它有效地"关闭"该部分的标题以及之后的标题,直到具有已定义标题的下一部分。...因此,例如,如果第2节标题继承自第1节并且您编辑第2节标题,则实际上更改了第1节标题的内容。

4K30

微信剧变

最近微信生态发生了巨大变化,这次的改变主要是公众号推文的图化。 这两年腾讯越来越重视视频号,从只是给了一个tab到在微信生态里随处可见,再到现在对公众号的平替。...很多人认为巨头大企业就能高枕无忧,其实是一种错觉。巨头如果无法保持对自身的迭代革命很可能短短数年就被淘汰。 这种故事在过去发生过很多次,曾经的诺基亚、曾经的柯达、曾经的雅虎,他们都是守成的巨头。...从视频号推送开始占据图文信息流,再到视频号直播置顶常读栏,再到现在图文推送图化,这每一步的改动都意味着图文阅读量的断崖式下降。 巨头一个不经意的动作的确能革掉很多人的命,没办法这就是残酷的现实。...最后说几句: 微信最近又进行了改变,如果没用星标的公众号,就会以图的形式展现,这样会让很多人遗漏掉最新文章。 如果大家想及时接收到最新内容,推荐大家把公众号“纯洁的微笑”星,感谢。

18720

AsyncDisplayKit 2.0 教程:入门「译」

ASTableNode 不会暴露所有UITableView的的属性,所以你必须通过 tableNode 底层的 UITableView 实例去设置 UITableView 的特殊属性。...首先,将 UITableViewDataSource 的 -tableView:numberOfRowsInSection:方法, 更改为ASTableDataSource 的版本。...完成,用新下载的数据更新 tableView 最后,确保 -completeBatchFetching:返回的是YES,即大功告成。在完成操作之前,不会进行新的数据请求。...更常见的做法时,你只需要对某 node 的特定的状态进行更改。这就是接口的状态回调。 Node 命名 为了看到一个 node 的各种状态,给它命名时很有必要的。...虽然当时并没有开源,并且有许多地方发生了变化,但看到这一切的开始还是挺有意思的。

2.1K20

【微服务架构】为故障设计微服务架构

要设置缓存和故障转移缓存,您可以使用 HTTP 中的标准响应头。 例如,使用 max-age 头,您可以指定资源被视为新鲜的最长时间。...使用 stale-if-error 头,您可以确定在发生故障时应该从缓存中提供资源多长时间。...在这些情况下,我们可以重试我们的操作,因为我们可以预期资源会在一段时间恢复,或者我们的负载均衡器将我们的请求发送到一个健康的实例。...我们可以使用断路器来处理错误,而不是使用的和特定于事务的静态超时。断路器以真实世界的电子元件命名,因为它们的行为是相同的。您可以通过断路器保护资源并帮助它们恢复。...当特定类型的错误在短时间内多次发生时,断路器会打开。一个打开的断路器会阻止进一步的请求——就像真正的断路器阻止电子流动一样。断路器通常在一定时间关闭,为底层服务恢复提供足够的空间。

44340

iOS点击TableView的cell显示弹出动画

最近使用豌豆荚一览的app时看到它的点击cell弹出界面的动画很帅,所以自己琢磨着实现了一个,效果如下: image 仔细观察的话效果分为几个部分,点击cell的时候,首先背景会出现阴影,只有点击的...弄清楚动画的组成成分以后,开始动手实现,怎么实现列表和详情界面就不说了,可以在文末我的示例工程里面看,直接说cell的点击执行的过程。...我们这里需要额外用到三个vied,一个是背景的阴影view,一个是点击的cell的view,一个是cell慢慢变成的纯白色view(最后炸开的也是这个纯白的view)。...colorWithWhite:0 alpha:0.5]; } return _bgView; } 接下来就是动画的部分了,我们去到点击cell的方法,也就是 (void)tableView:(UITableView...要注意的是我们不能直接使用点击到的cell的位置,经测试直接用他的原点会变成(0, 0),也就是出现在左上角,我也不知道为什么,所以这里要先获取对应的区域来更改cell的范围并作为纯白view的范围。

1.4K10
领券