- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我发现 systemLayoutSizeFittingSize:
方法的行为与我预期的不同。
这是为 swift Playground 截取的代码,它演示了行为,但它在 Objective-C 中是相同的:
import UIKit
import Foundation
var label = UILabel()
label.text = "This is a Test Label Text"
label.numberOfLines = 0
label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
label.preferredMaxLayoutWidth = 40
let layoutSize = label.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
let intrinsicSize = label.intrinsicContentSize()
我原以为 layoutSize
和 intrinsicSize
是一样的。
但在这种情况下,layoutSize
是 (w 173, h 20)
而 intrinsicSize
是 (w 40, h 104)
我希望两者都是 intrinsicSize
但似乎 systemLayoutSizeFittingSize:
忽略了 preferredMaxLayoutWidth
有人能给我解释一下吗?
编辑:还有
label.setNeedsLayout()
label.layoutIfNeeded()
let layoutSize = label.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
let intrinsicSize = label.intrinsicContentSize()
不会改变结果
最佳答案
固有大小是内容 View 的计算结果,您在示例中得到了预期的结果。另一方面,layoutSize 取决于 View 的约束,因为您没有定义任何系统使用不使用固有大小的默认值。但是,如果您使用向标签添加几个约束,即在 View 中垂直和水平居中,那么系统将使用固有内容大小来最终确定布局,并且两个大小将相同。
objective-c 中的代码示例:
//This code assume you have a UILabel as IBOutlet named testLabel with two constrains
// to center the view, then in "viewDidLoad:"
self.testLabel.text =@"This is a Test Label Text";
self.testLabel.font = [UIFont preferredFontForTextStyle:(UIFontTextStyleBody)];
self.testLabel.numberOfLines = 0;
self.testLabel.preferredMaxLayoutWidth = 40;
CGSize layoutSize1 = [_testLabel systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
CGSize intrinsicSize1 = [_testLabel intrinsicContentSize];
NSLog(@"\nlayout:%@\nintrinsicSize:%@",NSStringFromCGSize(layoutSize1),NSStringFromCGSize(intrinsicSize1));
对于这种情况,输出是:
2015-01-29 01:00:46.265 test[31327:911898]
layout: {38.5, 130.5}
intrinsicSize:{38.5, 130.5}
关于ios - systemLayoutSizeFittingSize : on UILabel not behaving like expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25555968/
我有一个行为场景大纲,我需要在其中使用竖线字符 - | 作为示例表中的单元格值。但我不知道如何转义这个字符而不被视为列分隔符。当我尝试使用 \| 序列时,出现了 Malformed table 错误。
这个示例代码有效(我可以在文件中写一些东西): from multiprocessing import Process, Queue queue = Queue() def _printer(self
我开始使用 Python Behave,因为我想做一个 API 测试。 目前我偶然发现了一些甚至可能无效的东西,但问题是:我可以在功能之间共享数据吗?我可以将一些存储在数据库或文件中,但也许有一些“内
我正在尝试使用 Cucumber (Behave) 编写测试。 'given' 语句需要能够带一个可选参数,它用于验证字符串中的内容。 这两种情况的示例功能语法是: Given Verify text
我正在尝试使用 Cucumber (Behave) 编写测试。 'given' 语句需要能够带一个可选参数,它用于验证字符串中的内容。 这两种情况的示例功能语法是: Given Verify text
我有以下测试场景: 检查是否已创建具有特定名称的项目 编辑此项目 验证是否已编辑 作为拆卸过程的一部分删除此项目 下面是实现此目的的示例代码:场景: @fixture.remove_edited_
我们正在使用 Behave BDD 工具来实现 API 的自动化。是否有任何工具可以使用我们的行为案例提供代码覆盖率? 我们尝试使用覆盖模块,它不适用于 Behave。 最佳答案 您可以运行任何具有覆
如何在行为 .feature 文件中将列表或字典之类的对象作为参数传递,以便我可以在我的 python 函数步骤中使用该参数?请参阅下面我试图实现的示例: Feature: Scenario: Giv
我创建了一个自定义错误处理程序来处理失败时的屏幕截图 #error_handler.py def screenshot_handler(func): def func_wrapper(self
我有多个示例的场景大纲,如下所示: Examples: | country | type | number | | Poland | A
body { background: url(http://i.imgur.com/LMYkPk3.jpg) no-repeat center center fixed; backgr
我正在尝试实现一个简单的图像轮播,但我无法阻止图像下降到下一行。这是我的 CSS: #gallery-wrap{margin: 0 auto; overflow: hidden; width: 532
我有一个状态标签,它根据以下内容显示带有彩色边框的消息当前状态。消息本身可能会有所不同(即可以有多个消息到 ERROR),但 CLEAR 状态不同,因为它永远不应该显示任何消息。 使用示例 setSt
我目前正在使用 Behave(Python 的 BDD)并且一直在挖掘源代码以了解 @given、@when 和 @then 正在声明装饰器。 我走得最远的地方是查看 step_registry.py
我有一系列 PHPUnit 测试来验证类“A 类”。 我有另一个类,“B 类”,它扩展了 A 类。 有没有一种好的方法可以在不复制测试代码的情况下测试“B 类通过了 A 类的测试”,或者换句话说“B
如标题所示,我希望在场景大纲之前运行一些特定的配置/环境设置步骤。我知道有 Background 可以针对场景执行此操作,但 Behave 将场景大纲拆分为多个场景,从而为场景大纲中的每个输入运行后台
考虑一个 Behave 场景: When some magic number is generated Then the number should be greater than 5 所以我有一个生
有没有办法告诉 behave 在步骤实现中跳过当前步骤? 类似于: @given("bla bla bla") def step(): skip_current_step() 用例是我想检查是
我正在使用 python-behave 进行 BDD 测试,我必须从命令行传递一个 URL(例如 www.abc.com)。 $behave -u "www.abc.com" 为此,我已阅读 beha
有人可以告诉我如何使用 Python 在 Behave 中再次运行失败的测试吗? 如果失败,我想自动重新运行失败的测试用例。 最佳答案 行为库实际上有一个 RerunFormatter这可以帮助您重新
我是一名优秀的程序员,十分优秀!