标签: autolayout

自动布局如何将view2从右移到底部?

我在左侧UIImageView和右侧的单元格中都有两个视图,其中 UIView包含其他一些视图,如图所示

在此处输入图片说明

现在我想如果Cell的宽度是=> 300,那么它View2应该在Screen的右边,就像在图片中一样,否则应该将其移动到View1

ios autolayout

1
推荐指数
1
解决办法
153
查看次数

使用Swift 3.0中的IBDesignable在左侧和右侧使用图像的UIButton

如何使用IBDesignable在UIButton中使用文本在左侧和右侧显示左右图像?

我试图谷歌它找到任何答案,但没有找到任何明智的答案.我想通过故事板来做到这一点.请帮忙

要求输出:

输出图像

uibutton ios autolayout ibdesignable swift3

1
推荐指数
1
解决办法
2663
查看次数

UIStoryBoard Auto Layout在UIScrollView中嵌入了UIStackView

我遇到问题设计我的ViewController,其中包含一些Label和一个ImageView.我已将它们嵌入到StackView中.我的目标是在ScrollView中放置一个StackView,这样如果内容比屏幕高度更长,我的内容就可以滚动

基本上我所做的就是

1 - 将UIScrollView放置在场景中.将滚动视图固定到没有边距的超级视图.

2 - 在滚动视图中放置UIStackView.将堆栈视图的所有边都固定到没有边距的滚动视图(是的,这是违反直觉的).

3 - 垂直滚动:在滚动视图和堆栈视图之间添加相等的宽度约束

这是我在故事板中的设置

在此输入图像描述

但我得到了这个红色警告限制.有人知道怎么修这个东西吗?Maythanks

在此输入图像描述

uiscrollview ios autolayout uistackview

1
推荐指数
1
解决办法
1018
查看次数

不满足的约束警告未在Xcode调试器中显示

我不再在Xcode控制台中看到"无法同时满足约束"警告.

我知道我有不满意的自动布局限制,因为我添加了UIViewAlertForUnsatisfiableConstraints符号断点,它偶尔会在那里打破.

我想知道是否存在特定的构建设置或我意外禁用的控制此日志记录行为的内容.

debugging xcode autolayout

1
推荐指数
1
解决办法
398
查看次数

彼此之间垂直居中

我想知道如何使用约束使对象在其他两个对象之间垂直居中。我使用情节提要。标签和按钮具有使用自动布局的约束(标签:顶部,前导,尾随,高度;按钮:底部,前导,尾随,宽高比)。

这是所有的样子:

这是我的UI的示意图。

我希望约束1和2(看看图像)的长度相同,以便“视图”在“标签”和“按钮”之间垂直居中。在较小的屏幕尺寸下,将隐藏的视图以相同的高度放置在它们之间对我不起作用。谢谢!


PS:一件事很重要:我希望视图居中,而不是所有元素都等距!

constraints ios autolayout swift

1
推荐指数
1
解决办法
2649
查看次数

有没有一种方法可以通过代码创建大于或等于关系的约束

我正在处理可扩展表格单元格,我的算法如下:

  1. 我创建两个视图。
  2. 创建第二个视图的高度约束,将其作为IBOutlet拖动到我的单元格中。
  3. 选择单元格后,更改所选单元格的状态。

class ExpandableCell: UITableViewCell {

    @IBOutlet weak var expandableCellHeightConstraint: NSLayoutConstraint!

    @IBOutlet weak var expandableView: UIView!

    var isExpanded:Bool = false
    {
        didSet
        {
            if !isExpanded {
                self.expandableCellHeightConstraint.constant = 0.0

            } else {
                self.expandableCellHeightConstraint.constant = 120
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但我想重新调整与内部内容相关的第二个视图的大小。

这是我的约束:

在此处输入图片说明

所以,我的问题是:

将非严格值写入的最佳方法是什么self.expandableCellHeightConstraint.constant?实际上,我曾想过编写类似的东西self.expandableCellHeightConstraint.constant >= 120,但据我所知这是不可能的。

ios autolayout nslayoutconstraint swift

1
推荐指数
1
解决办法
5378
查看次数

为什么带有图像的按钮会使titleLable文本被切断?

我在下面有这个代码,它在代码中创建一个按钮,并将按钮置于其超级视图的中间:

let cameraButton: UIButton = {
        let button = UIButton()
        button.setImage(UIImage(named: "cam"), for: .normal)
        button.setTitle("Take Pic", for: .normal)
        button.setTitleColor(UIColor.black, for: .normal)
        button.translatesAutoresizingMaskIntoConstraints = false
        button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 0)
        return button
}()

override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        view.addSubview(cameraButton)
        cameraButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
        cameraButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
}
Run Code Online (Sandbox Code Playgroud)

一切正常(因为按钮位于视图中心的中心)但titleLabel文本由于某种原因被切断(如下图所示):

在此输入图像描述

我认为按钮具有固有的宽度和高度,那么为什么titleLabel会被切断呢?宽度是否应该根据其内部(imageView以及标签)扩展?有人可以建议我解决这个问题的方法吗?

ios autolayout swift

1
推荐指数
1
解决办法
490
查看次数

自动布局动画以中心为锚点

我有一个基于约束的高度动画.然而,当动画开始时,它将视图的中心视为锚点而不是顶部.

我希望它以固定顶部和从底部收缩的方式进行动画处理.

对不起,我的英语不是母语.

我的意见主播:

top: superview
left: superview
right: superview
bottom: nil

// current height constant 200
view.height.constant = 0

UIView.animation(withDuration: 0.2, animations: {
    view.layoutIfNeded()
}}
Run Code Online (Sandbox Code Playgroud)

ios autolayout ios-animations swift3

1
推荐指数
1
解决办法
235
查看次数

UIImageView忽略宽度/高度限制

这是我的课:

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

}

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

private func load(){
    let someImage = UIImageView()
    someImage.translatesAutoresizingMaskIntoConstraints = false
    someImage.image = UIImage(named: "Test")
    self.addSubview(someImage)
    someImage.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
    someImage.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
    someImage.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 0.5)
    someImage.heightAnchor.constraint(equalTo: self.heightAnchor, multiplier: 0.5)
    }
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此处输入图片说明

(橙色是我的ViewController的背景)

为什么我的图像会忽略以下行:

someImage.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 0.5)
someImage.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 0.5)
Run Code Online (Sandbox Code Playgroud)

在图像中,它的倍数显然为1.0。实际上,它应该占据屏幕一半的高度和宽度,如乘数(0.5)所示。我究竟做错了什么?

uiimageview ios autolayout swift

1
推荐指数
1
解决办法
429
查看次数

将子视图放置在圆形视图的边缘

我正在尝试创建一个个人资料图片视图,看起来像下面的模型。它带有一个小绿点,表示用户的在线状态。

在此处输入图片说明

我正在以编程方式创建视图,因此可以重用它。下面是到目前为止的代码。

import UIKit

@IBDesignable
class ProfileView: UIView {

    fileprivate var imageView: UIImageView!
    fileprivate var onlineStatusView: UIView!
    fileprivate var onlineStatusDotView: UIView!


    @IBInspectable
    var image: UIImage? {
        get { return imageView.image }
        set { imageView.image = newValue }
    }

    @IBInspectable
    var shouldShowStatusDot: Bool = true


    override init(frame: CGRect) {
        super.init(frame: frame)
        initialize()
    }

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

    private func initialize() {
        backgroundColor = .clear

        imageView = UIImageView(frame: bounds)
        imageView.backgroundColor = .lightGray
        imageView.clipsToBounds = true
        imageView.layer.cornerRadius = …
Run Code Online (Sandbox Code Playgroud)

position uiview ios autolayout swift

1
推荐指数
1
解决办法
126
查看次数