【问题标题】:Why is image view stretching to fill half the width in a UIStackView?为什么图像视图会拉伸以填充 UIStackView 中宽度的一半?
【发布时间】:2017-04-15 15:13:28
【问题描述】:

我在水平堆栈视图的左侧使用 UIImageView 和行数设置为 0 的标签。问题是 UIImageView 和标签都填充了相等的空间,即使我已经设置要填充的堆栈视图分布属性。我不希望我的图像视图扩大。改变内容拥抱没有帮助。

【问题讨论】:

    标签: ios xcode uiimageview uilabel uistackview


    【解决方案1】:

    问题是:当告诉堆栈视图填充内容区域时,它会尽量做到最好。将分发类型设置为fill 时不知道如何填写。您必须通过图像的自动布局设置宽度约束来提供此信息。然后标签将填充剩余的区域。

    【讨论】:

      【解决方案2】:

      另一种方法是在图像+标签堆栈的右侧添加一个不可见的间隔对象。

      private func spacer() -> UIView {
          let stretchingView = UIView()
          stretchingView.setContentHuggingPriority(.defaultHigh, for: .horizontal)
          stretchingView.backgroundColor = UIColor.clear
          stretchingView.translatesAutoresizingMaskIntoConstraints = false
          return stretchingView
      }
      
      private func labelWithImage() -> UIView {
          let image = UIImage(systemName: "map")
          let imageView = UIImageView(image: image)
          let label = UILabel()
          label.text = "3 Miles Away"
          label.font = UIFont.systemFont(ofSize: 17, weight: .regular)
          label.textColor = UIColor.gray
          let stackView = UIStackView(arrangedSubviews: [imageView, label, spacer()])
          stackView.alignment = .leading
          stackView.axis = .horizontal
          return stackView
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        • 1970-01-01
        相关资源
        最近更新 更多