- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的类,其中包含两个标签和堆栈中的一行:
class TestView: UIView
{
let label_A = UILabel()
let label_B = UILabel()
override init(frame: CGRect) { super.init(frame: frame); setup() }
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder); setup() }
func setup()
{
let view_BG = UIView()
let view_LineH = UIView()
// Configure
view_BG.backgroundColor = .white
view_BG.layer.cornerRadius = 6
view_LineH.backgroundColor = .gray
label_A.numberOfLines = 0
label_A.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.2)
label_A.textColor = .red
label_B.numberOfLines = 0
label_B.textColor = .blue
label_B.backgroundColor = UIColor(red: 0, green: 0, blue: 1, alpha: 0.2)
label_A.text = "TestA"
label_B.text = "Experiment with Swift standard library types and learn high-level concepts using visualizations and practical examples. Learn how the Swift standard library uses protocols and generics to express powerful constraints. Download the playground below to get started."
// Assemble
self.addSubview(view_BG)
view_BG.addSubview(label_A)
view_BG.addSubview(view_LineH)
view_BG.addSubview(label_B)
// Layout
view_BG.constrain_edges(to: self)
label_A.constrain_edges(to: view_BG, excludingEdge: .bottom)
label_B.constrain_edges(to: view_BG, excludingEdge: .top)
view_LineH.constrain_height(1)
view_LineH.constrain_left(to: view_BG)
view_LineH.constrain_right(to: view_BG)
view_LineH.constrain_topToBottom(of: label_A)
label_B.constrain_topToBottom(of: view_LineH)
}
}
当我调用 sizeThatFits 时,它只是将高度返回给我:
let v = TestView()
let s = v.sizeThatFits(CGSize(width: 200, height: 10000))
// s is (200, 10000)
如何计算给定宽度所需的高度?
最佳答案
我相信你想要.systemLayoutSizeFitting()
:
let tv = TestView()
let targSize = CGSize(width: 200, height: 10000)
let fitSize = tv.systemLayoutSizeFitting(targSize, withHorizontalFittingPriority: 1000, verticalFittingPriority: 1)
print(fitSize)
// prints "(200.0, 245.0)" in my playground
我没有您用于 .constrain_edges
的任何东西,所以这是我正在运行的实际 View 类:
class TestView: UIView
{
let label_A = UILabel()
let label_B = UILabel()
override init(frame: CGRect) { super.init(frame: frame); setup() }
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder); setup() }
func setup()
{
let view_BG = UIView()
let view_LineH = UIView()
// Configure
view_BG.backgroundColor = .white
view_BG.layer.cornerRadius = 6
view_LineH.backgroundColor = .gray
label_A.numberOfLines = 0
label_A.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.2)
label_A.textColor = .red
label_B.numberOfLines = 0
label_B.textColor = .blue
label_B.backgroundColor = UIColor(red: 0, green: 0, blue: 1, alpha: 0.2)
label_A.text = "TestA"
label_B.text = "Experiment with Swift standard library types and learn high-level concepts using visualizations and practical examples. Learn how the Swift standard library uses protocols and generics to express powerful constraints. Download the playground below to get started."
// Assemble
self.addSubview(view_BG)
view_BG.addSubview(label_A)
view_BG.addSubview(view_LineH)
view_BG.addSubview(label_B)
view_BG.translatesAutoresizingMaskIntoConstraints = false
label_A.translatesAutoresizingMaskIntoConstraints = false
label_B.translatesAutoresizingMaskIntoConstraints = false
view_LineH.translatesAutoresizingMaskIntoConstraints = false
// Layout
view_BG.topAnchor.constraint(equalTo: self.topAnchor, constant: 0.0).isActive = true
view_BG.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 0.0).isActive = true
view_BG.rightAnchor.constraint(equalTo: self.rightAnchor, constant: 0.0).isActive = true
view_BG.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0.0).isActive = true
label_A.topAnchor.constraint(equalTo: view_BG.topAnchor, constant: 0.0).isActive = true
label_A.leftAnchor.constraint(equalTo: view_BG.leftAnchor, constant: 0.0).isActive = true
label_A.rightAnchor.constraint(equalTo: view_BG.rightAnchor, constant: 0.0).isActive = true
label_B.leftAnchor.constraint(equalTo: view_BG.leftAnchor, constant: 0.0).isActive = true
label_B.rightAnchor.constraint(equalTo: view_BG.rightAnchor, constant: 0.0).isActive = true
label_B.bottomAnchor.constraint(equalTo: view_BG.bottomAnchor, constant: 0.0).isActive = true
view_LineH.leftAnchor.constraint(equalTo: view_BG.leftAnchor, constant: 0.0).isActive = true
view_LineH.rightAnchor.constraint(equalTo: view_BG.rightAnchor, constant: 0.0).isActive = true
view_LineH.topAnchor.constraint(equalTo: label_A.bottomAnchor, constant: 0.0).isActive = true
label_B.topAnchor.constraint(equalTo: view_LineH.bottomAnchor, constant: 0.0).isActive = true
view_LineH.heightAnchor.constraint(equalToConstant: 1.0).isActive = true
}
}
关于ios - 为什么 sizeThatFits 不能与 UILabel 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453831/
我正在快速学习 cs193p,但我遇到了 UITextView.sizeThatFits(...) 的问题。它应该返回弹出 View 的推荐大小,以将 [int] 数组显示为文本。正如您在 Paul
我有一个带有 UITextView 的自定义 UICollectionViewCell,包含在 UICollectionView 中,用于评论系统。我已经实现了拉动刷新,以便 Collection V
更新: 对不起,我之前描述的不够和不正确。 我做了一些这样的代码: UIView *view = [[UIView alloc] initWithFrame:someFrame]; CGSize si
我对布局有一些非常具体的要求,这迫使我创建一堆 UILabel,使用 sizeThatFits 并相应地定位它们。然后将这些标签放置在 UITableView 的每个单元格中。单元格的高度由标签的大小
我实现了一个 UIPopoverController,其中填充了一个分组的 UITableView。只要弹出窗口不可见,表格 View 中的单元格数量就可以动态更改。一旦弹出窗口可见,单元格的数量就固
我正在尝试计算 UITableViewCell 的高度,所以我定义了一个看起来像这样的类方法 + (CGFloat)heightWithText:(NSString *)text { Sizi
目前,我使用 [aString sizeWithFont:constrainedToSize:lineBreakMode:] 正确调整了标签的大小,但我已将旋转引入到我的设备中,并且具有灵活的宽度和高
我一直在使用一种调整 UIButton 大小的方法,该方法已经过时,而且不是很可靠。出于这个原因以及其他原因,我想让 sizeThatFits 为 UIButtons 工作。根据我在网上阅读的内容,我
我正在尝试在我的应用中实现以下内容: themeLabel = [[UILabel alloc] init]; themeLabel.backgroundColor = [UIColor redCol
我有一个 TextView 和一个像这样的 View let lb = UITextView() let view = UIView() background_img_view.addSubview(
我有一个简单的类,其中包含两个标签和堆栈中的一行: class TestView: UIView { let label_A = UILabel() let label_B
我有一个以编程方式创建和显示的标签。它可以是 1 行或多行。如果标签太长,我希望标签在末尾被截断。当标签的长度 > 1 行时,以下代码可以正常工作。创建一个空白项目并将其放入 viewDidLoad
需要 UITextView 所需的高度。 sizeThatFits 返回比 boundingRectWithSize 更大但正确的高度。为什么会存在差异? 在两个地方我需要知道高度。在 cellFor
我发现在 iOS 8 中使用 UITextView sizeThatFits: 会导致出现故障的滚动行为。 TextView 不断滚动远离您正在键入的行。它似乎滚动到 View 的顶部,然后又返回。
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: iPhone — the input parameter to UIView's sizeThatFits
当我在我的一个 View 上调用 sizeToFit 时,我注意到 iOS 框架首先调用 sizeThatFits,然后在该 View 上调用 layoutSubviews。这对我来说是有问题的,因为
当您尝试在 UITextView 上执行 sizeThatFits 时,如果您随后将所述 UITextView 的高度设置为结果,那么它太短了!这个答案: UITextView Content Siz
我正在尝试使用从 sizeThatFits 检索到的适当高度使 UITextView 垂直居中。有大量其他答案表明这是最合适的计算方法。 (请注意,我已经对普通字符串和属性字符串都进行了尝试,并且都表
我知道 intrinisicContentSize 是 AutoLayout API 的一部分,但除此之外,我发现它与 -sizeThatFits 方法之间有很多功能重叠。 在什么情况下应该使用一个而
我有以下代码: UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, kWidth, 1)]; [webView
我是一名优秀的程序员,十分优秀!