我必须使用stackview作为父视图.我试图用2行动画stackview来获得折叠和膨胀底行的效果.你可以这么说,我试图做的就是你将这段代码应用到带有子视图的普通自动绘制视图时得到的结果:
func showView()
{
if(!expand)
{ UIView.animateWithDuration(0.5, animations:{
self.expandableViewHeight.constant = 50
// Update layout of all subviews
self.parentViewController!.view.layoutIfNeeded()})
} else {
UIView.animateWithDuration(0.5, animations:{
self.expandableViewHeight.constant = 100
// Update layout of all subviews
self.parentViewController!.view.layoutIfNeeded()})
}
}
Run Code Online (Sandbox Code Playgroud)
简单而整洁.当您点击此视图时,它会扩展或折叠其所有子视图.随着动画的进行,子视图被剪裁(未调整大小/重新缩放),最后您只能看到原始视图的一半.
它看起来很简单,但我无法用stackview完成它.当我将第二行添加到stackview然后设置layoutIfNeeded()动画时,就像在几个教程中一样,然后: - 当底部行的膨胀从左边到它的位置时, - 当折叠底部行时消失(没有动画) - 只有背景视图正确动画(请参阅代码)
当我使用高度约束并且不在底行的layoutIfNeeded()上设置动画时,则: - 当动画进行时,当底部行的充气重新调整为完整高度时 - 折叠时 - 底部行重新调整为0作为动画去了
不能让它夹在底行!任何提示赞赏!:)
这是我的stackview代码:
override func viewDidLoad(){
super.viewDidLoad()
background = UIView(frame:CGRectMake(0, 0, frame.width,frame.height))
background.backgroundColor = UIColor.whiteColor()
background.layer.cornerRadius = 5
background.layer.masksToBounds = true
self.addSubview(background)
vStack = UIStackView()
vStack.axis = .Vertical
vStack.alignment = .Fill …
Run Code Online (Sandbox Code Playgroud) 我想要一个添加UITextView
到UIStackView
编程,但它不会出现在屏幕上.
当我检入调试视图层次结构时,它位于视图层次结构中,它有一些约束但不会显示在输出视图中.
这是我的代码:
let stackView = UIStackView()
let textView = UITextView()
let button = UIButton()
stackView.axis = .Horizontal
stackView.spacing = 20
stackView.distribution = UIStackViewDistribution.Fill
button.setImage(UIImage(named:"image1"), forState: .Normal)
button.setImage(UIImage(named:"image2"), forState: .Selected)
textView.textAlignment = NSTextAlignment.Left
textView.textColor = UIColor.blackColor()
textView.editable = true
textView.text = ""
stackView.addArrangedSubview(textView)
stackView.addArrangedSubview(button)
Run Code Online (Sandbox Code Playgroud)
按钮添加正常.但我找不到正确显示TextView的方法!尝试添加如下所示的宽度/高度限制,但它不起作用,或工作不当(取决于变体):
let widthConstraint = NSLayoutConstraint(item: textView,
attribute: NSLayoutAttribute.Width,
relatedBy: NSLayoutRelation.Equal,
toItem: stackView,
attribute: NSLayoutAttribute.Width,
multiplier: 1,
constant: 0)
stackView.addConstraint(widthConstraint)
let heightConstraint = NSLayoutConstraint(item: textView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: stackView, attribute: NSLayoutAttribute.Height, …
Run Code Online (Sandbox Code Playgroud) 所以我在这里考虑了两种情况:
Drawbacs为1:
容器与其他应用程序资源分开,因为它们位于每个区域的存储帐户中
容器设计为扁平结构(您可以创建文件夹,但这并不明显)
2的Drawbacs:
看看这个,我会说每个应用程序创建存储帐户是一个更好的选择,但也许我在这里缺少一些东西.
所以问题是:这里还有其他事情要考虑让一个选项比另一个更好吗?也许是成本?
我偶然发现了一个类似的问题,但它是关于有一个大容器或许多小容器.所以问题在某种程度上是完全不同的,因为存储帐户作为一个整体是区域约束的,并且没有访问策略.虽然帐户中的所有容器都位于同一区域,但可以具有不同的访问策略.