如何使用滚动视图制作可滚动标签?

时间:2018-03-17 12:12:51

标签: ios swift autolayout

我想制作类似文章的内容来阅读包含UIImage的视图控制器和嵌套在滚动视图中的标签。

我想如果文章内容不大,滚动功能被禁用,但如果内容很大,我希望它可以滚动,并且可以滚动为标签内容高度的相同高度。

(如果内容文章不是太多,那么我不需要滚动)

enter image description here

但如果内容很多,那么我希望我可以滚动。目前,如果内容很大,我可以滚动

enter image description here

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

enter image description here

class 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 个答案:

答案 0 :(得分:1)

不要将约束限制在大于。只需将其设为等于。

滚动视图有一个包含所有可滚动视图的内容视图。您必须设置内容视图的高度,宽度和x,y位置。

将top,bottom,leading和trailing约束设置为内容视图。

Scrollview的滚动方向表示了contantview的高度和宽度。如果您将内容视图的宽度设置为等于scrollview,则scrollview在水平方向上不可滚动。高度相同,如果您将内容视图的高度设置为等于scrollview的高度,则scrollview在垂直方向上不可滚动。

在您的情况下,您必须将内容视图的宽度设置为等于scrollview的宽度,因此scrollview在水平方向上不可滚动。内容视图根据子视图自动获取高度(在您的情况下为UIimageview和uilabel)。因此,设置图像视图的高度,顶部,底部约束以及uilabel的顶部和底部约束,因为uilabel高度由其文本自动设置。在UILabel中设置number of line = 0

enter image description here

enter image description here enter image description here

答案 1 :(得分:0)

设置标签底部constaint等于任何恒定高度(比如20)& number of lines = 0

当您使用scrollview时,您必须为imageview提供高度。您不必担心标签高度bcz,其高度将根据其内容高度计算。

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

这就是你所要做的一切。

相关问题