UIButton 调整大小以适合其 titleLabel

2024-04-07

我有一个UIButton我将其添加到故事板中的视图控制器的视图中。我添加居中约束来定位它,并添加前导空间约束来限制其宽度。在代码中我添加:

self.button.titleLabel.numberOfLines = 0;
self.button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
[self.button setTitle:@"A real real real real real real real real long long name." forState:UIControlStateNormal];
self.button.backgroundColor = [UIColor redColor];
self.button.titleLabel.backgroundColor = [UIColor blueColor];

结果如下所示:

我希望按钮的大小适合其内容。我怎样才能做到这一点?

我试过了

[self.button sizeToFit];

我尝试将内容拥抱和压缩阻力自动布局约束优先级设置为所需的。

我也尝试过明确设置contentEdgeInsets and titleEdgeInsets to UIEdgeInsetsZero并打电话invalidateIntrinsicContentSize.

我还注意到,如果我在标题字符串中放置换行符,按钮似乎会调整大小以适合其内容。

我在 iPhone 6 模拟器上运行 Xcode 6 和 iOS 8。


斯威夫特 4.x的版本Kubba's https://stackoverflow.com/users/1495682/kubba answer:

需要更新越线 as 剪辑/自动换行/在界面构建器中添加到相应的按钮。

class ResizableButton: UIButton {
    override var intrinsicContentSize: CGSize {
       let labelSize = titleLabel?.sizeThatFits(CGSize(width: frame.width, height: .greatestFiniteMagnitude)) ?? .zero
       let desiredButtonSize = CGSize(width: labelSize.width + titleEdgeInsets.left + titleEdgeInsets.right, height: labelSize.height + titleEdgeInsets.top + titleEdgeInsets.bottom)

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

UIButton 调整大小以适合其 titleLabel 的相关文章

  • 如何避免 NSNumberFormatter 中的四舍五入

    我试图拥有一个最大精度为 2 位小数的数字字符串 而其余小数只是被修剪掉而不是四舍五入 例如 I have 123456 9964 I want 123456 99 gt Just want to trim rest of the deci
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • SwiftUI - 从 NSObject 继承的 ObservableObject 在 iOS 13 中不会更新

    我知道 这是 无法在 iOS XX 中工作 问题之一 但我完全陷入困境 所以我有一个ObservableObject继承自的类NSObject 因为我需要听委托方法UISearchResultsUpdating class SearchBa
  • 将滚动事件从 uibutton 传递到 uiscrollview

    我有水平的UIScrollView这是从UIScrollView我添加了UIButtons水平地 我只能滚动到按钮区域之外 但如果我想滚动到任何按钮就会触发UIControlEventTouchUpInside事件 我不想要这个 我想开火U
  • 在iOS中设置框架的原点

    我正在尝试以编程方式设置框架的原点 Method1 button frame origin y 100 方法二 CGRect frame button frame frame origin y 100 我尝试了方法 1 但它不起作用 显示错
  • 防止点击 MKAnnotation 时检测到 MKMapView 上的触摸事件

    我有一个 UITapGestureRecognizer 当用户点击地图时 它将在我的 MKMap 上隐藏和显示工具栏 简单 但是 当用户点击 MKMapAnnotation 时 我不希望地图以正常方式响应点击 如上所述 此外 当用户点击地图
  • 在 iOS 上使用 HEVC 编码器输出视频尺寸巨大

    我有一个项目 目前使用 H 264 编码器在 iOS 上录制视频 我想尝试在 iOS 11 中使用新的 HEVC 编码器来减小文件大小 但发现使用 HEVC 编码器会导致文件大小急剧膨胀 GitHub 上的一个项目显示了该问题 它使用 H
  • skView.ignoreSiblingOrder 在 swift 中的重要性/效率?

    这样做有多重要 高效skView ignoreSiblingOrder true初始化场景时 现在 我将其设置为 true 但由于某种原因 当我从 MainMenu 场景启动 GameScene 时 它 会在我的角色之前加载背景 即使背景的
  • 如何在 NSDate 变量中仅设置时间?

    我有 NSDate 变量 只想更改时间 不应更改日期 是否可以 例如 用户在 DatePicker 日期中选择日期间隔 如果是开始日期 我想将时间设置为 00 00 00 如果是结束日期 我将时间设置为 23 59 59 感谢你的帮助 问候
  • 检查系统时间是自动还是用户设置

    我需要在当前的项目中设置用户证明时间 我围绕这个问题发现了很多不同的问题 但似乎没有一个问题有我正在寻找的答案 这些是我到目前为止看过的问题 XCODE 如何从设备获取 验证准确的时间戳 https stackoverflow com qu
  • 在 UITextView 上添加具有自定义间距和文本的图像

    I want to add Image on text view and want proper spacing as shown in screenshot 我尝试在文本视图上添加图像 但在根据要求放置文本时遇到问题 请向我提供有关同样的
  • 如何从日期中获取小时、分钟和上午/下午? [复制]

    这个问题在这里已经有答案了 我尝试从日期中提取小时 分钟和上午 下午 但我得到 NULL 输出 我在下面显示了我的代码 请查看 NSString dateStr 29 07 2013 02 00am NSDateFormatter form
  • 如何更改便携式 xamarin ios 项目中的启动屏幕?

    我正在使用便携式 xamarin 形式 其中项目是 IOS 项目 在 IOS 项目中 我想创建闪屏 我在 ios 项目属性中添加了 Iphone 启动图像和 iPad 启动图像 当我运行该应用程序时 它显示默认的启动屏幕 我还尝试从 inf
  • 从 iOS 应用程序打开 YouTube 频道的最新 URL 方案是什么 [重复]

    这个问题在这里已经有答案了 我想使用 iPhone 应用程序中的频道打开 Youtube 应用程序 以前我使用以下 URL 方案并且工作正常 youtube 用户 频道名称 但在我将 Youtube 应用程序更新到最新的 2 6 0 后 这
  • AFNetworking 上传图片

    我看过一些例子 但我认为我的问题可能出在 PHP 中 我正在尝试使用 AFNetworking 将图像从 iPhone 上传到服务器 这是我的 obj c 代码 IBAction uploadButtonClicked id sender
  • UICollectionReusableView 方法未被调用

    我希望我的部分位于UICollectionView有一个带有图像的标题 我已按照以下步骤操作 在故事板中 分配了一个标题作为我的附件UICollectionView 给它一个标识符 创建了一个子类UICollectionReusableVi
  • NSDateFormatter:根据 currentLocale 的日期,不包含年份

    这不会太难吧 我想显示不带年份的日期 例如 8 月 2 日 美国 或 02 08 德国 它也必须适用于许多其他语言环境 到目前为止 我唯一的想法是对年份进行正常格式 然后从生成的字符串中删除年份部分 我认为你需要看一下 NSString d
  • UITextView:内存使用量巨大

    我在 UITextView 中遇到了内存使用过多的问题 我正在将 50Kb ascii 文本文件加载到 NSString 中 并将其分配给应用程序中空 UITextView 组件的 text 属性 这立即使我的内存占用量增加了 100Mb
  • 如何在 Swift 中创建 UIAlertView?

    我一直在努力在 Swift 中创建 UIAlertView 但由于某种原因我无法得到正确的语句 因为我收到此错误 找不到接受提供的 init 重载 论点 我是这样写的 let button2Alert UIAlertView UIAlert
  • 快速钥匙串更新只有在第二次尝试时才起作用

    您好 我在更新存储在钥匙串中的登录信息方面遇到了 iOS 钥匙串的一个非常奇怪的问题 因此 如果没有保存的凭据 则正确运行保存函数会保存登录信息 如果登录信息已存在并且用户更新了密码 则更新功能仅正确更新密码 但是 如果登录信息存在并且我尝

随机推荐

  • 如何确定 C++03 中的类型是否可取消引用?

    In C 03 如何判断一个类型是否T是可解引用的吗 我的意思是 我如何静态地确定是否 t将是一个有效的表达式t类型的T 我的尝试 template
  • GitHub 与现有 GPG 密钥合并失败

    我们有多个 github 存储库 需要对拉取请求进行签名提交 有时 由于警告 提交需要签名 我们无法合并拉取请求 即使提交已签名 看起来创建拉取请求的人可以合并它 Sqash 和合并 即使它只包含 1 次提交 这发生在两个帐户都是拉取请求的
  • 迭代器的性能优势?

    使用迭代器可以提供哪些性能优势 如果有 这似乎是解决许多问题的 正确方法 但它是否会创建更快 更内存敏感的代码 我正在专门用 Python 思考 但不要将答案限制于此 实际上 Python 邮件列表上有一篇关于此的非常好的邮件 迭代器与列表
  • Angular 2:从另一个组件调用现有组件

    我正在使用路由功能使用 Angular 2 创建一个应用程序 并且我有一个由较高路由之一呈现的弹出组件 并且我想在由以下之一呈现的组件中的单击事件上打开它更深层次的路线 例如 假设我有一个基本路由器 其模板包含弹出窗口 Component
  • 使用 C++0x decltype 返回值时返回局部变量或临时变量的地址

    Edit 这确实是编译器的一个bug 我开了一个defect https connect microsoft com VisualStudio feedback details 573330 bad code generated for f
  • PDO 和清理日期/删除 HTML

    我让用户使用此代码更新他们的姓名 dbh connect q dbh gt prepare UPDATE Users SET username name WHERE User ID id LIMIT 1 q gt bindParam id
  • Angular:以可重用/干净的方法将 API 数据转换为新的数据类型

    我正在尝试将 API 响应转换为完全不同的 ViewModel 用于多个组件 a 一种解决方案是直接在 API 代理中映射 管道数据 但是如果我只想要简单的原始 API 数据 那么 API 代理的可重用性不是很好 b 此模型适配器模式可能不
  • .ctp 文件中使用的“o”和箭头符号之间的区别?

    我对模型文件中使用的 o 和 gt 有点困惑 例如 asset Field identified by assetId o String assetId o Customer owner gt Customer custId partici
  • 如何将 500GB SQL 表转换为 Apache Parquet?

    也许这是有详细记录的 但我很困惑如何做到这一点 有很多 Apache 工具 当我创建 SQL 表时 我使用以下命令创建表 CREATE TABLE table name column1 datatype column2 datatype c
  • Linux C++:从 main() 返回是否会导致多线程应用程序终止?

    这个问题看起来可能是重复的 但我找不到 如果我错过了之前的问题 抱歉 在 Java 中 我有大部分经验 如果你的 main 分叉一个线程并立即返回 进程将继续运行 直到进程中的所有 非守护进程 线程都停止 在 C 中 情况似乎并非如此 一旦
  • Spring Cloud 配置服务器不刷新

    我正在设置一个 Spring 云服务器来读取内部 Stash 目录 服务器第一次加载 但如果我更新 git 中的属性 它们不会得到反映 直到我重新启动云服务器 我尝试 POST 到 refresh 端点 我使用的是 Windows 我看到一
  • 使用JMS临时队列进行同步使用是一个好习惯吗?

    如果我们使用 临时队列 的 JMS 请求 回复机制 该代码是否可扩展 截至目前 我们不知道是否会支持每秒 100 个请求 或者每秒 1000 个请求 下面的代码是我正在考虑实现的代码 它以 同步 方式使用 JMS 关键部分是创建 消费者 以
  • @Cachable注解不起作用

    我们在项目中使用 ehcache 进行缓存 import com googlecode ehcache annotations Cacheable Other imports Component public class Authentic
  • 使用 laravel 将 .JSON 文件保存到数据库

    总的来说 我对 Laravel 和 PHP 非常陌生 我所做的大部分工作都与在线教程相关 我知道如何将用户名或密码等单个项目保存到数据库中 但在存储整个文件时我一无所知 这就是我的数据库当前在迁移文件中的格式 public function
  • 合并两个 PDF

    import PyPDF2 import glob import os from fpdf import FPDF import shutil class MyPDF FPDF adding a footer containing the
  • 如何使用 PHP 在 S3 存储桶中创建文件夹

    我正在尝试在 S3 亚马逊存储桶中创建一个文件夹 但我发现很难找到正确的文档来充分解释所需内容 我有以下用于创建文件夹的代码 伪代码 任何人都可以解释或提供我需要在代码中放置的参数示例 use vendor aws S3 S3Client
  • 符号化 Swift Package Manager 构建

    Swift Package Manager可以是构建快速项目的便捷方法 并且 如果您 删除它添加到二进制文件中的绝对工具链 rpath https github com apple swift package manager blob 2d
  • cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 *.exe.stackdump

    我收到 cygwin exception open stackdumpfile 将堆栈跟踪转储到 TestProject exe stackdump 错误 我的项目只不过是一个 C HalloWorld 项目 其中包含一个附加类 我在其中设
  • Knockback.js 生产准备好了吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • UIButton 调整大小以适合其 titleLabel

    我有一个UIButton我将其添加到故事板中的视图控制器的视图中 我添加居中约束来定位它 并添加前导空间约束来限制其宽度 在代码中我添加 self button titleLabel numberOfLines 0 self button