添加到 UISearchDisplayController 时 UISearchBar 被剪裁在状态栏下方

2024-01-06

我希望我的搜索栏将其背景绘制在状态栏下方向上延伸,如下所示:

这是上图对应的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.searchBar = [[UISearchBar alloc] init];
    self.searchBar.delegate = self;
    [self.view addSubview:self.searchBar];
    
    self.searchBar.translatesAutoresizingMaskIntoConstraints = NO;
    NSDictionary *views = @{@"v":self.searchBar,
                            @"topLayoutGuide":self.topLayoutGuide};
    
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topLayoutGuide][v]" options:0 metrics:nil views:views]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[v]|" options:0 metrics:nil views:views]];
    
    [self.searchBar setBackgroundImage:[UIImage imageNamed:@"searchbarBG"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault];
}

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar
{
    return UIBarPositionTopAttached;
}

当我将搜索栏添加到UISearchDisplayController通过在末尾添加以下行viewDidLoad method:

self.mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];

这是我得到的结果:

请注意,图像看起来被剪裁了。这与我在代码中将 UIBarPositionTopAttached 更改为 UIBarPositionTop 的情况不同:

被剪裁的图像让我想起clipsToBounds我可以通过在末尾添加这段代码来使搜索栏正确显示viewDidLoad:

for (UIView *subview in self.searchBar.subviews) {
    subview.clipsToBounds = NO;
}

所以我猜UISearchDisplayController正在搞乱clipsToBounds的财产UISearchBar背景视图。还有其他人为此苦苦挣扎吗?我的代码有问题吗?

Update:

早在 2013 年 10 月,除了发布这个问题之外,我还使用 Apple Bug Reporter 工具报告了这个问题。 2015 年 1 月 6 日(太晚了)我收到了 Apple 开发者关系部门的回复:

基于以下原因,没有计划解决此问题:

不再支持 UISearchDisplayController。所需 UISearchController 应该具有该功能,如果没有 (或者行为不正确),请提交新的错误。

我们现在即将结束这份报告。

如果您对该决议有疑问,或者这仍然是一个 对您来说是关键问题,那么请更新您的错误报告 信息。

请务必定期检查新的 Apple 版本是否有任何更新 这可能会影响这个问题。


我遇到了完全相同的问题,但是将 searchBar 的 ClipsToBounds 强制设置为 YES,就成功了。不需要自动布局,也不需要 UIBarPositioning 协议方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加到 UISearchDisplayController 时 UISearchBar 被剪裁在状态栏下方 的相关文章

  • iOS 中的胖二进制文件

    是否有可能为 iOS 构建 32 位和 64 位 胖 二进制文件 我的理解是 这即将到来 但我在 Xcode 的最新更新中看不到明显的方法来做到这一点 我希望我的应用程序在 5S 上以 64 位模式运行 在 5 及以下版本上以 32 位模式
  • Swift - 带有两行文本的 UIButton

    我想知道是否可以创建一个包含两行文本的 UIButton 我需要每一行都有不同的字体大小 第一行为 17 点 第二行为 11 点 我尝试过将两个标签放在 UIButton 内 但我无法让它们留在按钮的范围内 我试图在 ui 构建器中完成所有
  • iOS:将 ISO Alpha 2 转换为 Alpha 3 国家/地区代码

    是否可以在 iOS 中将 ISO 3166 alpha 2 国家 地区代码转换为 alpha 3 国家 地区代码 例如 DE 转换为 DEU 基于 Franck 的答案 这里是用于加载 plist 的代码 swift4 然后转换 3 个字母
  • 我们可以在 Tiff 文件中添加自定义键或如何在 Tiff 文件的图像属性中添加温度数据

    我想在选定点添加图像的温度数据 它是否有任何预定义的属性 或者我们是否可以在 Tiff 文件中创建自定义 私钥来存储图像的温度数据 Answer 使用 TIFF 库文档在 TIFF 文件中创建您自己的自定义键 在文档中 他提到了如何创建和使
  • 在 iOS 和 Android 版 Google 地图上突出显示国家/地区

    我正在尝试在地图上突出显示国家 地区 对于iOS我发现很少有演示 Demo1 http sugartin info 2012 02 13 adding overlays on mkmapview using mkpolygon mkpoly
  • UIPageViewController 并删除当前视图控制器

    I setup UIPageViewController通过一些视图控制器前进和后退 我有一个问题 当视图控制器添加到UIPageViewController内存使用量将会增加 直到编译器给我Received memory warning然
  • 面部过滤器实现如 MSQRD/SnapChat [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想将实时面部过滤器开发为 MSQRD Snapchat 实时过滤器 但无法找出应该如何继续使用增强现实框架并检测面部或使用核心图像来
  • 添加新行后,UITableView rollToRow 不再适用于 iOS 11

    我注意到一个奇怪的 UITableView 行为似乎只发生在 iOS 11 设备上 插入新行后 更改数据源然后调用 reloadData UITableView调用时不会滚动到该行scrollToRow or scrollToBottom
  • iOS 7 从 Mobile Safari 访问 iPhone 相机?

    In iOS 6你可以使用这样的东西
  • IO 和 Android 之间发送数据? (字节数组)

    我正在 Android 中开发一个网络应用程序 它应该能够与 IO 应用程序进行通信 我正在使用 Appwarps 多人游戏后端 并且有一个发送和接收数据的功能 该函数接受一个字节数组 所以最初我认为我可以将一个 消息 对象序列化为一个字节
  • 在采取行动之前如何知道几个块是否已经执行完毕?

    我在用着animateWithDuration animations completion 之前移动用户界面的几个元素 大约 4 个元素 removeFromSuperview 叫做 我的问题是 我怎么知道在调用之前所有这些动画都已完成re
  • UITableView - 节标题。如何更改文字?

    我有一个使用故事板的项目 我有一个带有静态单元格和组样式的 UITableView 我需要根据分段控件 在另一部分中 中所做的选择来更改一个部分中的部分文本 我找到了一些解决方案 表明您应该使用覆盖此方法 NSString tableVie
  • 获取 iPhone 上 Spotify 中当前播放的歌曲

    访问MPMusicPlayerController systemMusicPlayer 下面的代码 适用于获取 Apple Music 应用程序中正在播放的曲目信息 但是我们有没有办法访问 Spotify 应用程序中当前播放的歌曲的信息 此
  • 如何制作抗崩溃的ios应用程序

    我现在正在编写 ios 应用程序一段时间 但我的应用程序仍然经常崩溃 并且需要时间才能使它们变得非常稳定 我觉得这很烦人 那么 有没有关于防崩溃编程ios应用程序的编程模式呢 打开编译器警告 删除所有警告 运行静态分析器 删除所有警告 使用
  • 我想通过协议将数据从第二个 ViewController 传递到 TableView 单元

    这是我的ViewController2从我需要传递数据的地方 我如何传递数据 protocol oppo func datapass Name String className String rollnumner String school
  • 快速检测屏幕上任意位置的触摸

    我知道你可以使用touchesBegan touchesEnded等来检测触摸 这些都有效 唯一的问题是 它们只检测视图本身的触摸 而不检测视图顶部的任何内容 例如文本字段 我的目标是在一段时间不活动后创建一个超时 如果触摸屏幕 超时将被重
  • 错误:“无效数据消息 - 全部长度必须为:8” - PickerIOS

    Edit 似乎如果我注释掉第 63 行 this setState logged in true 行 我就不会收到错误 我的猜测是 我尝试根据用户是否登录来更改渲染函数中显示的内容的方式是导致此错误的原因 有任何想法吗 我感觉 在理解 Re
  • 橡皮擦在 iOS 绘图中不起作用

    我正在做一个绘图项目 其中有一个橡皮擦选项 下面给出的代码适用于我启动应用程序并绘制一些线条并继续使用橡皮擦时的代码 它工作正常 我得到了橡皮擦效果 现在第二种情况是我画了大约10条线 然后单击 撤消按钮 并撤消整个事情 然后我重做整个事情
  • 从 Social.framework(iOS6) 获取 Facebook 访问令牌

    我需要检索我在 设置 应用程序中设置的系统帐户的 Facebook 访问令牌 我知道 Social framework iOS6 知道我所有的 FB 帐户信息 并且我可以使用 SLRequest 类对 Graph API 执行 API 调用
  • 使用其他应用程序打开 pdf

    我正在应用程序中显示 pdf 文件 我想在 nag bar 上显示 打开方式 选项 显示 iPhone 上安装的可以打开相同 pdf 的应用程序 如果用户选择任何应用程序 例如 pdf 查看器 则应该使用 pdf 查看器应用程序打开 pdf

随机推荐

  • 我可以使用 getopt 按特定顺序处理选项吗?

    我正在实现一个命令行工具 并且我需要能够处理一堆选项 某些选项完成后必须终止程序 例如我有选项a b和c 如果 a 和 b 在完成后终止 并且我发出命令 myprogram bca file 在这种情况下 有没有办法使用 getopt 给予
  • 大 O 与小 omega

    为什么 n 小于 O n 我知道什么是小欧米茄 例如 n log n 但我不明白为什么 n 小于 O n 大 Oh O 是上限 小 omega 是上限Tight下限 O g n f n 存在正常数 c 和 n0 使得 0 f n cg n
  • 如何在jmeter中对csv数据集配置的文件名文本进行参数化

    我将 csv 数据集配置中归档的文件名文本的值传递为 filename 该变量包含整个路径 并从另一个 csv 数据集配置中获取它 该配置直接存在于线程组和我所在的变量中传递到 if 控制器内部的 csv 数据集配置我无法将该值传递到文件名
  • 在 C# .net 中发送电子邮件

    我有以下代码来发送电子邮件 System Net Mail SmtpClient client new System Net Mail SmtpClient client Send email protected cdn cgi l ema
  • 使用 PHP 编写“if”条件语句有哪些不同方法?

    使用 PHP 编写 if 条件语句有哪些不同的方式 我知道以下示例 if test 1 else and if test 1 echo asdsa else echo sdaaa 有的是替代控制结构语法 http php net manua
  • 字符串字典:任何不符合协议“可解码”[重复]

    这个问题在这里已经有答案了 我正在尝试实现 Decodable 来解析 json 请求 但 json 请求在对象内部有一个字典 这是我的代码 struct myStruct Decodable let content String Any
  • iOS-将数组对象复制到另一个数组对象中

    我有一个小问题 我需要帮助 我想循环遍历一个多维数组 每次我找到一个键 ex name 等于 ex 的值 你好 我想将该数组对象复制到另一个数组中 我怎么做 您将这样做 NSArray newArray NSArray arrayWithA
  • C++20 中允许 east constexpr / constinit / consteval 吗?

    我在网上找到的大多数例子都更喜欢 西方风格 constexpr C 11 consteval and constinit C 20 consteval auto sqr int n return n n constexpr auto r s
  • 如何创建面积范围图

    我想创建area range chart如下所示link http jsfiddle net D4w7G 3 我想使用数据循环将数据添加到范围 应该是什么类型ranges创建图表 请建议 提前致谢 这是 JSFiddle 代码 HTML d
  • 如何通过 Azure Devops CI/CD 使用单臂模板部署多个逻辑应用程序?

    我有多个带有相应 ARM 模板的逻辑应用程序 现在 我想将不同的 ARM 模板合并到一个 ARM 模板中 并通过 AZURE DEVOPS 管道同时部署多个逻辑应用 对于您的场景 您需要首先更改 ARM 模板结构 例如 我想将4个ARM模板
  • HTTP/2 与 OkHttp

    我正在尝试使用 HTTP 2 服务器进行通信OkHttp http square github io okhttp client 添加到 Maven POM
  • 动态覆盖首选字符串本地化以进行测试

    使用 iPhone 模拟器中的 设置 应用程序切换语言是测试本地化调整的 PITA 方法 我正在尝试找出一种在我的应用程序中使用调试设置动态切换本地化 en fr es etc 的方法 而无需重新启动应用程序 NSBundle 提供了从任意
  • mvc4数据注释比较两个日期

    我的模型中有这两个字段 Required ErrorMessage The start date is required Display Name Start Date DisplayFormat DataFormatString 0 d
  • 通过 cloudformation 启动实例后,userData 未得到执行

    我创建了一个 AWS cloudformation 它创建了一个启动配置和一个自动缩放组 在启动配置中的用户数据中 我配置了文件系统挂载目标 并安装了cloudwatch代理 代码已编辑 LaunchConfig Type AWS Auto
  • Flexbox 在 Safari 中包裹第一行的最后一列

    在 Safari 和其他一些基于 iOS 的浏览器中查看时 第一行的最后一列会换行到下一行 Safari 镀铬 其他 Code flexthis display webkit box display webkit flex display
  • 为什么 Rust 中的 range/loop 比 java 慢?

    我有一个程序 对于所有小于或等于输入的整数 找到可以表示为两个立方之和的数字 两次 又名拉马努金数字问题 我用 Java 和 Rust 编写了这个 但是 它在 Rust 中的运行速度比 Java 慢两倍多 我能做些什么来让它表现得更好 或者
  • 如何在 Sencha Architect 2 中添加“Ext.require”

    按照说明here http docs sencha com touch 2 0 guide native apis为了使用 Native API 我需要在代码中添加 Ext require 我如何在 Sencha Architect 2 中
  • make 函数如何接受三个参数?

    功能make是这样描述的 func make Type size IntegerType Type 当我们使用make对于切片有时它显示为 make int 0 10 所以我的问题是 怎样才能make函数需要三个参数 这size Integ
  • 如何将 SB3 文件转换为 EXE

    我正在 Scratch 3 上创建一个游戏 但是 当我完成它时 我想将其转换为 exe 文件 我该怎么做呢 我长期以来对游戏开发很感兴趣 甚至以前尝试过Unity 但我只是一个初学者 这对我来说太难了 所以我转向了 Scratch 对的 这
  • 添加到 UISearchDisplayController 时 UISearchBar 被剪裁在状态栏下方

    我希望我的搜索栏将其背景绘制在状态栏下方向上延伸 如下所示 这是上图对应的代码 void viewDidLoad super viewDidLoad self searchBar UISearchBar alloc init self se