我在左侧UIImageView和右侧的单元格中都有两个视图,其中 UIView包含其他一些视图,如图所示
现在我想如果Cell的宽度是=> 300,那么它View2应该在Screen的右边,就像在图片中一样,否则应该将其移动到View1
我遇到问题设计我的ViewController,其中包含一些Label和一个ImageView.我已将它们嵌入到StackView中.我的目标是在ScrollView中放置一个StackView,这样如果内容比屏幕高度更长,我的内容就可以滚动
基本上我所做的就是
1 - 将UIScrollView放置在场景中.将滚动视图固定到没有边距的超级视图.
2 - 在滚动视图中放置UIStackView.将堆栈视图的所有边都固定到没有边距的滚动视图(是的,这是违反直觉的).
3 - 垂直滚动:在滚动视图和堆栈视图之间添加相等的宽度约束
这是我在故事板中的设置
但我得到了这个红色警告限制.有人知道怎么修这个东西吗?Maythanks
我不再在Xcode控制台中看到"无法同时满足约束"警告.
我知道我有不满意的自动布局限制,因为我添加了UIViewAlertForUnsatisfiableConstraints符号断点,它偶尔会在那里打破.
我想知道是否存在特定的构建设置或我意外禁用的控制此日志记录行为的内容.
我想知道如何使用约束使对象在其他两个对象之间垂直居中。我使用情节提要。标签和按钮具有使用自动布局的约束(标签:顶部,前导,尾随,高度;按钮:底部,前导,尾随,宽高比)。
这是所有的样子:

我希望约束1和2(看看图像)的长度相同,以便“视图”在“标签”和“按钮”之间垂直居中。在较小的屏幕尺寸下,将隐藏的视图以相同的高度放置在它们之间对我不起作用。谢谢!
PS:一件事很重要:我希望视图居中,而不是所有元素都等距!
我正在处理可扩展表格单元格,我的算法如下:
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,但据我所知这是不可能的。
我在下面有这个代码,它在代码中创建一个按钮,并将按钮置于其超级视图的中间:
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以及标签)扩展?有人可以建议我解决这个问题的方法吗?
我有一个基于约束的高度动画.然而,当动画开始时,它将视图的中心视为锚点而不是顶部.
我希望它以固定顶部和从底部收缩的方式进行动画处理.
对不起,我的英语不是母语.
我的意见主播:
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) 这是我的课:
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)所示。我究竟做错了什么?
我正在尝试创建一个个人资料图片视图,看起来像下面的模型。它带有一个小绿点,表示用户的在线状态。
我正在以编程方式创建视图,因此可以重用它。下面是到目前为止的代码。
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) autolayout ×10
ios ×9
swift ×5
swift3 ×2
constraints ×1
debugging ×1
ibdesignable ×1
position ×1
uibutton ×1
uiimageview ×1
uiscrollview ×1
uistackview ×1
uiview ×1
xcode ×1