gpt4 book ai didi

ios - 即使内容/压缩设置为 1,图像也会增长

转载 作者:行者123 更新时间:2023-11-30 12:09:38 25 4
gpt4 key购买 nike

这是我想以编程方式创建的内容: enter image description here

这是一个 UIView,里面有一个 UIImageView 和一个 UILabel。一些注意事项:

  • 图像应始终为 1:1
  • 图片的高度应与标签的高度相同
  • 如果标签中的文本变宽, View 也应该变宽。
  • View 的高度应该适应标签的高度,因此我没有设置 UIView 的任何高度约束。
  • 请参阅此 github 项目以获取我想要的示例:https://github.com/Jasperav/constrains

这是我的代码,您可以复制粘贴此代码,但请确保为 UIImageView 的图像设置其他字符串:

class View2: UIView{
override init(frame: CGRect) {
super.init(frame: frame)
load()

}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
load()
}

func load(){
let overlappingView = UIView()
overlappingView.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(overlappingView)

let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "0"
label.textColor = .white
label.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 751), for: .horizontal)
label.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 999), for: .vertical)
label.setContentHuggingPriority(UILayoutPriority(rawValue: 999), for: .vertical)
label.setContentHuggingPriority(UILayoutPriority(rawValue: 999), for: .horizontal)

let image = UIImageView()
image.image = UIImage(named: "Test")
image.translatesAutoresizingMaskIntoConstraints = false
image.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 1), for: .horizontal)
image.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 1), for: .vertical)
image.setContentHuggingPriority(UILayoutPriority(rawValue: 1), for: .vertical)
image.setContentHuggingPriority(UILayoutPriority(rawValue: 1), for: .horizontal)

overlappingView.addSubview(label)
overlappingView.addSubview(image)

overlappingView.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
overlappingView.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: -2).isActive = true
overlappingView.widthAnchor.constraint(greaterThanOrEqualTo: self.widthAnchor, multiplier: 0.6).isActive = true

label.topAnchor.constraint(equalTo: overlappingView.topAnchor, constant: 5).isActive = true
label.bottomAnchor.constraint(equalTo: overlappingView.bottomAnchor, constant: -5).isActive = true
label.trailingAnchor.constraint(equalTo: overlappingView.trailingAnchor, constant: -5).isActive = true
label.heightAnchor.constraint(equalTo: image.heightAnchor, multiplier: 1).isActive = true

image.centerYAnchor.constraint(equalTo: overlappingView.centerYAnchor).isActive = true
image.leadingAnchor.constraint(equalTo: overlappingView.leadingAnchor, constant: 2).isActive = true
image.widthAnchor.constraint(equalTo: image.heightAnchor, multiplier: 1).isActive = true
image.trailingAnchor.constraint(equalTo: label.trailingAnchor, constant: -10).isActive = true

}
}

通过这段代码,我看到图像以 1:1 的尺寸占据了整个屏幕的高度。为什么它不尊重标签高度?我在界面生成器中具有相同的约束,为什么它在代码中不起作用?

谢谢。

最佳答案

嗨,我对你的代码进行了一些修改并修复了它。我添加了一些颜色,以便你可以轻松地看到差异。如果您还有更多问题我会再次帮助您。

class View2: UIView{
override init(frame: CGRect) {
super.init(frame: frame)
load()

}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
load()
}

func load(){
self.backgroundColor = .green
let overlappingView = UIView()
overlappingView.backgroundColor = .red
overlappingView.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(overlappingView)

let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "0"
label.textColor = .black


let image = UIImageView(frame:CGRect(x: 10, y: 10, width: 10, height: 10))
image.image = UIImage(named: "btn_back")
image.tintColor = .black
image.backgroundColor = .blue
image.translatesAutoresizingMaskIntoConstraints = false
image.setContentCompressionResistancePriority(1, for: .horizontal)


overlappingView.addSubview(label)
overlappingView.addSubview(image)

label.sizeToFit()

overlappingView.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
overlappingView.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: -2).isActive = true
overlappingView.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 1.0).isActive = true
overlappingView.heightAnchor.constraint(equalToConstant: label.frame.height + 10).isActive = true

label.topAnchor.constraint(equalTo: overlappingView.topAnchor, constant: 5).isActive = true
label.bottomAnchor.constraint(equalTo: overlappingView.bottomAnchor, constant: -5).isActive = true
label.trailingAnchor.constraint(equalTo: overlappingView.trailingAnchor, constant: -5).isActive = true
label.heightAnchor.constraint(equalTo: image.heightAnchor, multiplier: 1).isActive = true


image.centerYAnchor.constraint(equalTo: overlappingView.centerYAnchor).isActive = true
image.leadingAnchor.constraint(equalTo: overlappingView.leadingAnchor, constant: 2).isActive = true
image.widthAnchor.constraint(equalTo: image.heightAnchor, multiplier: 1).isActive = true
image.trailingAnchor.constraint(equalTo: label.leadingAnchor, constant: -10).isActive = true


}
}

关于ios - 即使内容/压缩设置为 1,图像也会增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46239053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com