iOS   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – swift:以编程方式创建UILabel固定宽度,根据文本长度垂直调整大小大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经看到了涉及自动布局的垂直大小调整的答案,但我正在创建的UILabels仅在运行时需要. (我可能需要零到多个这些标签.)

示例(忽略颜色)

>短文本(注意与较长文本相同的宽度):

>更长的文本(注意与较短文本示例相同的宽度,并且添加更多行的文本):

如果文本可以适合固定宽度的一行,则标签不需要垂直调整大小.但是如果有更多字符,标签应该保持垂直扩展以适应这些附加字符.文本应该一行一行地包裹.文本应从标签左上角开始.

更具体:

let marker = GMsmarker(position: myLatLng)
// see https://stackoverflow.com/a/40211383/1168364 for imageWithView
marker.icon = imageWithView(label) // **how do i create this label?**
marker.map = map // map is a GMsmapView

这些标签可以在屏幕上的任何位置.这适用于地图应用程序,其中每个标签将放置在随机位置.标签的位置彼此没有关系.

解决方法

UIView有两种有用的方法sizeToFit()和 @L_403_3@

一个将视图调整为最小尺寸以适合子视图的内容,第二个视图根本不更改帧,但返回计算的大小:(1)适合所有子视图和(2)不超过参数大小

所以你可以使用sizeThatFits:

let label = UILabel()

override func viewDidLoad() {
    super.viewDidLoad()

    label.BACkgroundColor = UIColor.orange
    label.textColor = UIColor.white
//  label.text = "ultimate Frisbee"
    label.text = "ultimate Frisbee\nin 3 minutes,\nall welcome|2"
    label.numberOfLines = 10
    view.addSubview(label)

    updateLabelFrame()
}

func updateLabelFrame() {
    let maxSize = CGSize(width: 150,height: 300)
    let size = label.sizeThatFits(maxSizE)
    label.frame = CGRect(origin: CGPoint(x: 100,y: 100),size: sizE)
}

输出


附:您也可以通过自动布局约束@L_489_23@您的问题,但我不是以编程方式使用它们的忠实粉丝.

大佬总结

以上是大佬教程为你收集整理的ios – swift:以编程方式创建UILabel固定宽度,根据文本长度垂直调整大小全部内容,希望文章能够帮你解决ios – swift:以编程方式创建UILabel固定宽度,根据文本长度垂直调整大小所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。