如何使用滚动视图创建可滚动标签?

3
我希望制作一个类似于文章阅读视图控制器的东西,其中包含嵌套在滚动视图中的UIImage和Label。
如果文章内容不太多,则禁用滚动功能,但如果内容很多,则希望它可以滚动,并且可以滚动到与标签内容高度相同的高度。
(如果文章内容不是太多,那么我就不需要滚动)

enter image description here

但如果内容很多,我希望可以滚动。目前,只有当内容很大时,我才能滚动。

enter image description here

我已经尝试设置底部锚点,就像下面的代码一样,但它不起作用。这是我为底部标签约束使用的自动布局和视图层次结构。

enter image description here

类 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

}

}

2个回答

5
不要将底部约束设置得比实际值大,只需将其设置为相等即可。
滚动视图有一个内容视图,其中包含所有可滚动的视图。您需要设置内容视图的高度、宽度和x、y位置。
将顶部、底部、前导和尾随约束设置为内容视图。
滚动视图的滚动方向取决于内容视图的高度和宽度。如果将内容视图的宽度设置为与滚动视图相等,则无法在水平方向上滚动滚动视图。同样,如果将内容视图的高度设置为与滚动视图的高度相等,则无法在垂直方向上滚动滚动视图。
在您的情况下,您需要将内容视图的宽度设置为与滚动视图的宽度相等,因此滚动视图在水平方向上不可滚动。内容视图根据子视图自动获取高度(在您的情况下是UIimageview和uilabel)。因此,请设置imageview的高度、顶部和底部约束以及uilabel的顶部和底部约束,因为uilabel的高度会根据其文本自动设置。在UILabel中设置number of line = 0

enter image description here

enter image description here enter image description here


0

将标签底部约束设置为任何常量高度(例如20)& number of lines = 0

由于您正在使用scrollview,因此必须为imageview指定高度。 您不需要担心标签高度,因为其高度将由其内容高度计算。

现在,您的scrollviewContentHeight = imgView.height + all labels content height。 确保每个组件(imageview和每个标签)都具有顶部和底部约束。

这就是您要做的全部。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接