如何使用表头视图内的排除路径正确调整文本视图的大小

2024-03-27

我在 tableView 标题中添加了一个视图,其中包含 imageView 和 textView。图像视图在顶角左对齐,文本视图在图像视图上延伸到屏幕的右侧,如下所示。

textView 可以有动态内容,并具有如下设置的排除路径:

let imagePath = UIBezierPath(rect: imageView.frame)
self.textView.textContainer.exclusionPaths = [imagePath]

我已禁用文本视图的滚动,并在标题视图内设置了以下约束:

TextView:左 - 8px,右 - 8px,顶部 - 0px,底部 - 8px

ImageView:左 - 8px,宽 - 100px,高 100px,顶部 - 8px,底部 - 大于或等于 8px

在我的 textView 填充动态文本后,我添加了以下代码:

if let headerView = self.tableView.tableHeaderView {
    let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
    var headerFrame = headerView.frame

    if height != headerFrame.size.height {
        headerFrame.size.height = height
        headerView.frame = headerFrame
        self.tableView.tableHeaderView = headerView
    }
}

它调整标题的大小。但是,当 textView 的文本少于图像的高度时,视图的大小会增大。

Example of three lines of text: enter image description here

Example of six lines of text: enter image description here

Example of enough text to pass imageview: enter image description here

有谁知道为什么会发生这种情况?


我已经解决了这个问题,因为我自己也遇到了这个问题:) 你看,我正在尝试做一些非常相似的事情,其中UITextView的文本应该避免UIImageView在它的左边。我的代码如下:

let ticketProfileExclusionPath = UIBezierPath(roundedRect: ticketProfilePicture.frame, cornerRadius: Constants.ProfilePictureExclusionRadius)
ticketContent.textContainer.exclusionPaths.append(ticketProfileExclusionPath)

我的结果不是很好:

如您所见,问题取决于CGRect给予ticketContent UITextView作为其排除路径,因为后者假设给定CGRect被纠正为它自己的框架,而不是它的超级视图的框架.

修复非常简单,需要使用自诞生以来就存在的 API(iOS 2.0):

let exclusionPathFrame = convert(ticketProfilePicture.frame, to: ticketContent).offsetBy(dx: Constants.SystemMargin, dy: Constants.Zero)

我们在这里所做的是将UIImageView的框架到UITextView的坐标系,因此从UITextView。添加的偏移量只是为了对齐我的所有三个UITableViewCell's text UIViews.

convert() is a UIView method.

如您所见,文本现在环绕在ticketProfilePicture UIImageView相当好。

希望这可以帮助。

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

如何使用表头视图内的排除路径正确调整文本视图的大小 的相关文章

  • 关闭应用程序后如何调试

    我正在尝试重现问题 这需要在特定位置关闭并重新打开我的应用程序 这是我的问题 1 如何查看我的日志 使用NSLog命令 当我的 iPhone 未连接到 XCode 时 2 是否可以将iPhone模拟器的特定位置 例如市中心 设置为默认位置
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提
  • 文档 Main.storyboard 需要 Xcode 8.0 或更高版本

    我下载了 Xcode beta 并打开了现有的项目 看看它如何与 Xcode 8 beta 一起使用 我从 Xcode 8 打开了 Storyboard 文件 现在 当我从 Xcode 7 3 打开项目时 我无法打开故事板文件 它给出了以下
  • Swift iOS 9.2 中的每日本地通知

    尝试快速发送每日本地通知 然而 由于某种原因 它只是每分钟发送一次 我希望第一个通知在应用程序打开后 30 分钟发送 然后每天重复此通知 在 swift fie 中我有以下代码 每日通知代码 同时在应用程序委托中添加部分 让 Date NS
  • 如何声明文本字段只能包含整数?

    在 swift 中 我试图创建一个文本字段 该文本字段将允许启用按钮 但仅当文本字段包含整数时 我怎样才能做到这一点 两件事情 指定键盘类型以仅显示数字键盘 所以 设置keyboardType to numberPad 然而 这还不足以阻止
  • 如何使 collectionViewCell 仅按高度自动调整大小?

    我使用collectionView的自动调整流布局的功能 self flow UICollectionViewFlowLayout alloc init self flow scrollDirection UICollectionViewS
  • “未发现包含任何钥匙串签名证书的未过期配置文件”恐怖

    我看到了其他一些涉及这个主题的问题 但没有一个像我的 昨天我无意中将一个设备添加到设备列表中 问题 我的印象是 一旦添加设备 它现在就会链接到配置文件 然而 我相信它没有链接到我的分发配置文件之一 因此 我进入编辑配置文件 单击设备旁边的复
  • 使用 AVFoundation 和 Swift 访问多个音频硬件输出/通道

    如何使用 AVFoundation 访问除 1 2 之外的其他音频硬件输出 我正在为 Mac OS X 应用程序编写快速代码 该应用程序通过各种输出设备 USB 接口 dante soundflower 播放 mp3 文件 如下所示 myP
  • 锁定时 AVAudioPlayer 在 iPhone 5 中不播放音频

    使用 AVAudioPlayer 我尝试在 iphone 播放器播放时播放声音 当设备锁定时也是如此 问题是 在 iPhone 4s ios 7 中 效果很好 但在带有 6 和 7 ios 的 iPhone 5 上没有任何反应 In the
  • 如何在 UINavigationController 中收到弹出视图的通知?

    我想在用户按下我的后退按钮时执行操作UINavigationController当到达某个时UIViewController 不幸的是它看起来像UINavigationControllerDelegate没有任何方法来获取视图弹出的通知 作
  • 如何缓存单元格并重用每个单元格中嵌入了 avplayers 的集合视图中的单元格?

    基本上我想做的是缓存单元格并让视频继续播放 当用户滚动回到单元格时 视频应该只从播放的位置显示 问题是玩家被移除并且单元格最终出现在随机单元格上 而不是其指定区域 您需要有两个视频才能正常工作 我从这里下载了视频https commonda
  • Swift 每 5 天重复一次 LocalNotification

    如何每 5 天上午 10 00 重复一次 LocalNotification 我尝试这个 但它不起作用 let content UNMutableNotificationContent content title Hello content
  • Xcode 8.2 更新后二进制文件无效

    我今天尝试在更新到 Xcode 8 2 后向我的应用程序推送更新 但收到无效的二进制错误 我以前从未见过这个 我的应用程序的 iOS 部署目标是 iOS 9 0 有谁见过这个错误或知道如何修复它 这是电子邮件的内容 解释了二进制文件的无效内
  • iOS图片上的线测量

    我需要一些帮助来开始绘制末端带有圆圈的线条 并测量其长度 我能够划清界限 但无法让它移动 花了几个小时决定在 SO 上发布 因此 请参阅下图并指导我开始 任何使用 Objective C 的示例或教程都会有帮助 谢谢 这个想法看起来实现起来
  • 自调整大小的集合视图在 iOS 15 中进入递归循环

    我有一个自动调整大小的集合视图 当我调用 super layoutSubviews 时 我的应用程序崩溃 因为集合视图进入递归更新循环 这在 iOS 14 及更低版本中运行良好 但从 iOS 15 开始就观察到了这一点 class Dyna
  • 从 Xcode iOS 项目运行 swift 脚本作为构建阶段

    这是一个简单的快速脚本 usr bin env xcrun swift import Foundation let task NSTask task launchPath bin echo task arguments farg1 arg2
  • 如何在 iOS 中通过 wifi 传输大文件

    我下载了WiTap http developer apple com library ios samplecode WiTap Introduction Intro html代码来自苹果网站 它用于通过本地 WiFi 网络传输数据 我正在从
  • 从堆栈弹出后重新出现 UITableViewCellSeperator 的问题

    我有一个将动态数据加载到表视图中的应用程序 当只有一项时 因此只有一个单元格 为了确保 UITableViewCellSeperator 没有显示这一项 我使用以下代码 CGFloat tableView UITableView table
  • Swift 如何格式化带有千位分隔符的大数字?

    有没有一个简单的命令可以将 1 60543e 06 格式化为 1 605 436 resultFV text String localizedStringWithFormat f fv 不明白 在斯威夫特 3 中 NumberFormatt
  • 从另一个选项卡重新加载 UITableView

    我在尝试重新加载时遇到问题UITableView从 XML 源加载的单元格数据 这是场景 应用程序包含选项卡 其中一个选项卡中有一个表格视图 它从 XML 文件获取数据并且工作正常 但问题是当我想要更改提要类别并从另一个选项卡更改 XML

随机推荐

  • 无法在 mac os yosemite 中通过 brew 链接 PCRE

    当我使用安装守望者时brew install watchman 它得到了这个Error You must brew link pcre before watchman can be installed 所以我尝试brew link pcre
  • 一种阻止移动浏览器下载和显示图像的方法

    有没有一种简单的方法来阻止浏览器下载和显示图像 最好是通过一些魔法样式标签或javascript 问题是 我想稍微调整一下公司的网站 以便通过移动设备更方便使用 该公司是一家游戏公司 其主页上有大约 5MB 的图像 而且这些图像是不能动的
  • Google Apps 脚本中的 MailApp.sendEmail() 不发送电子邮件

    我们为客户建立了 Google G Suite 在过去的几周里 我们发现 Google Apps 脚本没有按预期处理 MailApp sendEmail 它只发生在新的 G Suite 帐户中 并且现有帐户中的代码与预期的功能完全相同 fu
  • 将数据导出到 Excel 在数据表中不起作用

    在 head 之间添加此行后 导出数据和 TableTools 不适用于我
  • 检查对象的类型是否继承自特定类

    在C 中 如何检查对象的类型是否继承自特定类 class Form class Moveable public Form class Animatable public Form class Character public Moveabl
  • 从活动中调用 JavaScript 函数?

    如何使用 Activity 中的按钮调用加载到 webView 中的 HTML 文档中的函数 即 一个 ImageButton 称为 bookBtn 位于 Activity 的标题栏中 当按下 点击它时 我需要它在 webView DOM
  • 从 Set 中检索“规范值”,其中 T 具有自定义 equals()

    我有一个class Foo这会覆盖equals and hashCode 适当地 我想也想使用HashSet
  • 为什么当我追加子项时我的输入值会被清除?

    当我在 a 中附加元素时遇到问题div我输入的所有值 包括选定的选项 都被清除 如下所示 正如您所看到的 当我单击按钮 A adir tecla 时 文本框中的文本和所选选项 Shift 将返回到默认选项 Flechas de movimi
  • Outlook 中的文本不使用行高

    我正在使用 Html 创建电子邮件 并且偶然发现 Outlook 2010 存在问题 这是我的代码 td width 514 height 460 valign top td
  • Facebook Connect iPhone 自定义发布流

    我刚刚下载了 iOS 版 Facebook SDK 因为我需要能够将自定义流发布到用户的 Facebook feed 示例应用程序有一个名为publishStream id sender的方法 该方法似乎为 发布流 对话框设置自定义描述 但
  • counter_cache 列返回 0 的 Rspec 测试

    几天来 我一直在努力弄清楚什么是应该很容易做的事情 然而 我对 Rails 和 ruby 的世界仍然很陌生 我只是无法解决这个问题 p 无论如何 我遇到的问题是我的模型中有许多 counter cache 列 这些列在手动测试时都工作得很好
  • 防止使用 PHP CURL 的远程脚本登录网站

    有哪些方法可用于保护登录页面不被远程 PHP 脚本使用 CURL 登录 检查引荐来源网址和用户代理将不起作用 因为它们可以使用 CURL 设置 理想的解决方案是在不使用验证码的情况下解决这个问题 这就是这个问题的重点 试图弄清楚这是否可能
  • 导入的样式不会应用于组件

    我想创建单独的文件来存储 IE 9 11 的样式 为此 我创建并导入了文件InternetExplorer scss进入 主文件styles scss import scss InternetExplorer scss The Intern
  • 错误:存在部署错误

    当我尝试运行任何示例应用程序或新应用程序时 它显示此错误 有人可以帮忙吗 该错误告诉您尚未选择设备 运行应用程序之前请选择有效的设备 您需要选择一个物理手机 或 Android 模拟器 来部署应用程序 Ref 在设备上调试 https de
  • 及时编译 - 存储与始终执行[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 JVM 不缓存 JIT 编译的代码 https stackoverflow com questions 1992486 why doesnt the jvm cache jit compile
  • Rspec、Cucumber:最佳速度数据库清理策略

    我想提高测试速度 我应该使用use transactional fixtures或与database cleaner gem 哪种database cleaner策略是最好的 我注意到 从迁移后 truncation to transact
  • 线程:在 GUI 线程之外使用像素图是不安全的

    我正在构建一个音乐播放器 它使用 SqueezePlay 一个 SqueezeBox 控制器应用程序 检查状态 长话短说 我使用线程每 5 秒检查一次 Squeezeplay 的状态 如果歌曲标题发生变化 我让它更新标签 Qlabel 专辑
  • MySql。如何使用自加入

    我需要在此表上使用自连接 Country Rank Year France 55 2000 Canada 30 2000 Liberia 59 2001 Turkey 78 2000
  • spring在单元测试中使用application.properties吗?

    我的项目使用 Spring Boot 当我运行我的应用程序时 如果我运行我的单元测试 RunWith SpringJUnit4ClassRunner 我得到以下错误 我不知道为什么spring在单元测试中没有使用application pr
  • 如何使用表头视图内的排除路径正确调整文本视图的大小

    我在 tableView 标题中添加了一个视图 其中包含 imageView 和 textView 图像视图在顶角左对齐 文本视图在图像视图上延伸到屏幕的右侧 如下所示 textView 可以有动态内容 并具有如下设置的排除路径 let i