我试图通过仅构建一个可重复使用的XIB而不是构建三个视图以放入stackView来使生活更轻松
我已经创建了自定义的xib文件,并将其连接到自己的自定义类:
标签和图像受约束放置。我希望标签能够自动调整大小,最多三行,因此标签的高度限制为> =,内容视图也可以按高度缩放(> =)
UserReview代码:
class UserReview: UIView {
@IBOutlet weak var userImage: UIImageView!
@IBOutlet weak var username: UILabel!
@IBOutlet weak var userRating: UILabel!
@IBOutlet weak var reviewText: UILabel!
@IBOutlet weak var prosText: UILabel!
@IBOutlet weak var consText: UILabel!
class func instanceFromNib() -> UIView {
return UINib(nibName: "UserReview", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
}
func setUp(review: Review){
// TODO set userImage
username.text = review.username!
// TODO add rating + color
reviewText.text = review.content!
if let pros = review.positive_points {
prosText.text = pros
} else {
prosText.text = "No Positive Points"
}
if let cons = review.negative_points {
consText.text = cons
} else {
consText.text = "No Negative Points"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在其中添加subViews的StackView的高度限制也> = 200(最少一张卡),但似乎并没有随着添加的更多卡来调整大小。对齐方式是填充和分布:等距
我尝试过处理包含评论的StackView的约束和对齐属性,但是最接近的我是重叠的Views。
我创建视图并将其添加到堆栈视图的方式:
let review1 = UserReview.instanceFromNib() as! UserReview
let review2 = UserReview.instanceFromNib() as! UserReview
let review3 = UserReview.instanceFromNib() as! UserReview
self.reviewStack.addArrangedSubview(review1)
self.reviewStack.addArrangedSubview(review2)
self.reviewStack.addArrangedSubview(review3)
Run Code Online (Sandbox Code Playgroud)
根据我对这个堆栈问题 的了解,StackView的视图高度有问题吗?我尝试了大多数建议的解决方案,但遇到了不同的问题。
我试图得到的结果:
(图像由于某种原因而消失,稍后会检查。)
小智 0
首先从 UIStackView 中删除高度限制,因为 StackView 总是根据其内部的视图扩展其高度。
将 StackView 的所有 4 个侧面约束设置为其超级视图,并将内部大小设置为占位符。
现在,按照与现在相同的方式将 UIView 添加到堆栈视图。不要对任何 UIView 标签和 UIView 本身设置高度约束。只需确保您已设置最顶部元素的顶部约束和底部元素的底部约束。通过这种方式,自动布局了解如何根据元素的约束和内容增加所有元素的高度。
要详细了解,您可以按照我的回答/sf/answers/4056816221/
| 归档时间: |
|
| 查看次数: |
1327 次 |
| 最近记录: |