- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 UITextField,其中包含带有数字的文本,我在尝试对该 View 使用自动布局时遇到了麻烦。根据数字,它有时会太窄,因此不会显示所有文本。只有当我使用 monospacedDigitSystemFont 时才会发生这种情况。此外,如果我使用 UILabel 而不是 UITextField,则不会发生这种情况。当文本中有几个“窄”数字(例如 1)时会发生这种情况,而不是当数字都是“宽”数字(例如 5)时。似乎 UITextField 计算了它的 intrinsicContentSize
而没有呈现等宽数字。如何解决这个问题?
这张图说明了这个问题。橙色背景显示 UILabel,而黄色背景显示 UITextField。该问题仅出现在顶部的黄色框中(具有窄数字“111111”)。
我有一个解决方法:使用 attributedString 属性而不是将字体直接分配给 UITextField,但是我希望有人有更好的解决方案。图形的 Playground 代码在这里:
import UIKit
import PlaygroundSupport
func place(subview:UIView, on view:UIView, x:CGFloat, y:CGFloat) {
view.addSubview(subview)
subview.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint(item: subview, attribute: .left, relatedBy: .equal, toItem: view, attribute: .left, multiplier: 1, constant: x).isActive = true
NSLayoutConstraint(item: subview, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: y).isActive = true
subview.setContentCompressionResistancePriority(.required, for: .horizontal)
}
let numericFont = UIFont.monospacedDigitSystemFont(ofSize: 18, weight: .regular)
let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 170))
containerView.backgroundColor = .lightGray
let textWithNarrowDigits = "111111 narrow digits"
let textWithWideDigits = "555555 wide digits"
func show(text:String, topOffset:CGFloat) {
// Using UILabel - works as expected
let label = UILabel()
label.font = numericFont
label.text = text
label.backgroundColor = .orange
print("Label intrinsicContentSize:\(label.intrinsicContentSize)") // width = 177 for narrow digits
place(subview: label, on:containerView, x: 20, y: topOffset)
// Using UITextField - width is too small (as if not monospaced)
let field = UITextField()
field.font = numericFont
field.text = text
field.backgroundColor = .yellow
print("Field intrinsicContentSize:\(field.intrinsicContentSize)") // width = 161 for narrow digits
place(subview: field, on:containerView, x: 20, y: topOffset + 30)
}
show(text: textWithNarrowDigits, topOffset: 10)
show(text: textWithWideDigits, topOffset: 100)
PlaygroundPage.current.liveView = containerView
最佳答案
这是我的解决方法。而不是:
field.font = numericFont
field.text = text
使用:
field.attributedText = NSAttributedString(string: text, attributes: [NSAttributedStringKey.font : numericFont])
这样做,即使使用等宽窄数字,UITextField 似乎也能正确计算其内在内容大小。但我仍然希望有一个真正的解决方案。
关于ios - 使用等宽数字系统字体的 UITextField 的错误 intrinsicContentSize(宽度)导致剪切文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557568/
如果图像的宽度和高度相等,我如何添加类“相等”。 这是我的代码: var img = $('img', this); var width = img.width(); var height = img
任何人都可以告诉我涵盖大部分 unicode 字符的等宽字体吗?如果没有,那么包含大部分欧洲语言字符集的等宽字体? 最佳答案 我也在寻找单色空间、丰富的 Unicode 字体。到目前为止,我使用 De
我编写了一个程序来拍摄照片并创建 ASCII 表示(ASCII 艺术)。起初,我将 ASCII 字符串写入控制台,但现在我有了一个保存文本的 JLabel。但是,JLabel 输出是不规则的,不像控制
如果我有生成的列表 我要分成几列 like this是否有可能以某种方式让列与最宽的列一样宽 . 我有一个下拉导航,目前我在 上只有一个固定宽度s 但对于较小的导航元素,如“常见问题解答”,有很多
我对编程很陌生。 我试图让三个 col-md-4 具有相同的宽度。我假设如果在 HTML 中正确引用了 Bootstrap,则不需要 CSS。任何建议将不胜感激。 代码: /*NAV LOGO*/ .
是否可以像这样制作一个纯 CSS 解决方案: 元素有一些最小宽度。 它们应该动态增长以填充所有容器宽度,然后换行 列表中的所有元素都应具有相同的宽度。 现在是这样的: 这也是我希望它看起来像的样子(我
我正在尝试通过 flexbox 创建三行,其中将包含可变数量的列(顶部和底部的行将在数量上匹配)和一个中间列,它只是一个列。 由于列数是可变的,因此父级上没有设置宽度。 我正在努力让中间列的宽度与顶部
是否可以像这样制作一个纯 CSS 解决方案: 元素有一些最小宽度。 它们应该动态增长以填充所有容器宽度,然后换行 列表中的所有元素都应具有相同的宽度。 现在是这样的: 这也是我希望它看起来像的样子(我
我将对象动态添加到面板,然后添加到我的边框布局。我需要西部、中心和东部的大小都相等。这是我目前所拥有的: static int width = 300;//Screen width static in
我有一列 4 个元素。由于内容不同,所有元素的宽度都不同。使用 flexbox,有谁知道如何使所有元素与最大元素的宽度相同,同时保持它们全部居中? 这是我目前拥有的。 .container { d
我正在创建一个表单,我有 2 个并排的 div。这是我当前的 html: First name Middle n
如何并排排列 3 个 UIButton。我正在使用自动布局。我的要求是: 1.无论设备如何,它们都应该是等宽的 2.从 View 的开始到结束垂直占据 我尝试了不同的方法,我没能实现。是否可以通过界面
我在 flexbox 中使用 box-sizing: border-box; 具有不同的 border 厚度。我希望 flexbox 中的元素具有相等的宽度,但它会计算没有边框的元素的 width。
我在 flexbox 中使用 box-sizing: border-box; 具有不同的 border 厚度。我希望 flexbox 中的元素具有相等的宽度,但它会计算没有边框的元素的 width。
我是一名优秀的程序员,十分优秀!