如何使用滚动视图制作可滚动标签?
Posted
技术标签:
【中文标题】如何使用滚动视图制作可滚动标签?【英文标题】:how to make scrollable label using scroll view? 【发布时间】:2018-03-17 12:12:51 【问题描述】:我想制作类似文章的内容来读取包含 UIImage 和 Label 嵌套在滚动视图中的视图控制器。
如果文章内容不大,我希望禁用滚动功能,但是如果内容很大,我希望它可以滚动,并且可以滚动到与标签内容高度相同的高度。
(如果内容文章不是太多,那我就不用滚动了)
但如果内容很多,那么我希望我可以滚动。目前,如果内容像下面这样大,我可以滚动
我尝试像下面的代码一样设置底部锚点,但它不起作用。这是我用于底部标签约束和视图层次结构的自动布局
类 NotificationDetailVC: UIViewController
@IBOutlet weak var notificationTitleLabel: UILabel!
@IBOutlet weak var notificationImage: UIImageView!
@IBOutlet weak var notificationDateLabel: UILabel!
@IBOutlet weak var notificationScrollView: UIScrollView!
@IBOutlet weak var notificationContentLabel: UILabel!
var dataNotification : [String:Any]?
override func viewDidLoad()
super.viewDidLoad()
notificationScrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: notificationContentLabel.bottomAnchor).isActive = true
【问题讨论】:
【参考方案1】:不要将底部约束设置为大于。只需将其设置为等于。
滚动视图有一个包含所有可滚动视图的内容视图。您必须设置内容视图的高度、宽度和 x,y 位置。
为内容视图设置顶部、底部、前导和尾随约束。
Scrollview 的滚动方向取决于 contantview 的高度和宽度。如果您将内容视图的宽度设置为等于滚动视图,则滚动视图在水平方向上不可滚动。与 height 相同,如果将内容视图的高度设置为等于滚动视图的高度,则滚动视图在垂直方向上不可滚动。
在您的情况下,您必须将内容视图的宽度设置为等于滚动视图的宽度,因此滚动视图在水平方向上不可滚动。内容视图根据子视图自动获取高度(在您的情况下为 UIimageview 和 uilabel)。所以设置 imageview 的高度、顶部、底部约束和 uilabel 的顶部和底部约束,因为 uilabel 高度由它的文本自动设置。在 UILabel 中设置number of line = 0
。
【讨论】:
【参考方案2】:将标签底部约束设置为等于任何恒定高度(例如 20)和number of lines = 0
。
当您使用scrollview
时,您必须为imageview
指定高度。您无需担心标签高度,因为它的高度将由其内容高度计算。
现在你的scrollviewContentHeight = imgView.height + all labels content height
。确保每个组件(图像视图和每个标签)都有顶部和底部约束。
这就是你所要做的。
【讨论】:
以上是关于如何使用滚动视图制作可滚动标签?的主要内容,如果未能解决你的问题,请参考以下文章