如何使用PureLayout将标签分开

时间:2018-05-11 00:26:17

标签: swift autolayout pure-layout

我在使PureLayout与UILabel一起工作时遇到了一些麻烦,我正在考虑这个问题并试图将彼此分开

我有一个标签,从视图顶部和视图左侧间隔一些边距。然后我有一个辅助标签,也应该从视图的左边放置一些边距,然后从第一个标签的底部隔开相同数量的边距

autoPinEdge似乎希望UIView引用边界而UILabel显然不是UIView所以我试图弄清楚如何获得这个工作

我的第一个想法是创建新视图,只是按住标签,我可以引用视图来获取坐标等,但它们现在没有出现在视图中,这里是基本设置

placeTitleLabelView = UIView(frame: CGRect.zero)
placeTitleLabel = UILabel(frame: CGRect.zero)
placeTitleLabel.textColor = UIColor.white
placeTitleLabel.font = UIFont(name: "Helvetica", size: 25)

placeTitleLabelView.addSubview(placeTitleLabel)
scrollView.addSubview(placeTitleLabelView)

placeDistanceLabelView = UIView(frame: CGRect.zero)
placeDistanceLabel = UILabel(frame: CGRect.zero)
placeDistanceLabel.textColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.5)
placeDistanceLabel.font = UIFont(name: "Helvetica", size: 18)

placeDistanceLabelView.addSubview(placeDistanceLabel)
scrollView.addSubview(placeDistanceLabelView)

然后我尝试设置所有约束

placeTitleLabelView.autoPinEdge(.left, to: .left, of: scrollView, withOffset: edgesInset)
placeTitleLabelView.autoPinEdge(.top, to: .top, of: scrollView, withOffset: edgesInset)

placeDistanceLabelView.autoPinEdge(.left, to: .left, of: scrollView, withOffset: edgesInset)
placeDistanceLabelView.autoPinEdge(.top, to: .bottom, of: placeTitleLabelView, withOffset: edgesInset / 2)

我正在使用的所有其他元素都显示得很好,但我不明白为什么这些不是,它们只是标签,但是我无法使用限制来处理它们。

1 个答案:

答案 0 :(得分:0)

通过确保在设置标签大小后将包含视图的高度设置为标签的高度,我能够使这些工作正常工作

placeDistanceLabel.sizeToFit()
placeDistanceLabelView.autoSetDimension(.height, toSize: placeDistanceLabel.bounds.height)
placeDistanceLabelView.autoPinEdge(.left, to: .left, of: scrollView, withOffset: edgesInset)
        placeDistanceLabelView.autoPinEdge(.top, to: .bottom, of: 
placeTitleLabelView, withOffset: edgesInset / 2)