假设我在UIStackView中添加了更多可以显示的视图,如何制作UIStackView
滚动?
我正在尝试以编程方式在UIStackView中添加视图.现在我的代码是:
UIView *view1 = [[UIView alloc]init];
view1.backgroundColor = [UIColor blackColor];
[view1 setFrame:CGRectMake(0, 0, 100, 100)];
UIView *view2 = [[UIView alloc]init];
view2.backgroundColor = [UIColor greenColor];
[view2 setFrame:CGRectMake(0, 100, 100, 100)];
[self.stack1 addArrangedSubview:view1];
[self.stack1 addArrangedSubview:view2];
Run Code Online (Sandbox Code Playgroud)
当我部署应用程序时,只有一个视图,它是黑色的.(view1也获取view2的参数)
我试图UIStackView
在Storyboard检查器中将背景从清除更改为白色,但在模拟时,堆栈视图的背景颜色仍然具有清晰的颜色.
如何更改背景颜色UIStackView
?
将多行标签(将换行符设置为Word Wrap)放入堆栈视图时,标签会立即丢失换行符并在一行中显示标签文本.
为什么会发生这种情况?如何在堆栈视图中保留多行标签?
这是我的设置:我有一个UIScrollView
领先的,顶部的,试验边缘设置为0.在此我添加一个UIStackView
有这个约束:
stackView.centerYAnchor.constraintEqualToAnchor(selectedContactsScrollView.centerYAnchor).active = true
stackView.leadingAnchor.constraintEqualToAnchor(selectedContactsScrollView.leadingAnchor).active = true
Run Code Online (Sandbox Code Playgroud)
在堆栈视图中,我添加了一些视图.
我的问题是,由于约束,添加到堆栈视图的第一个视图也将具有前沿= 0.
我可以在第一个视图中添加一些填充的方法是什么?无需调整滚动视图约束.
当我的UIStackView"行"被压扁时,它们会AutoLayout
发出警告.但是,它们显示正常,除了这些类型的记录之外别无其他错误:
无法同时满足约束.可能至少下列列表中的一个约束是您不想要的约束.试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它.(注意:如果您发现
NSAutoresizingMaskLayoutConstraints
自己不明白,请参阅该UIView
物业的文件translatesAutoresizingMaskIntoConstraints
)(
所以,我不知道如何解决这个问题,但它似乎并没有破坏任何东西,除了烦恼.
有谁知道如何解决它?有趣的是,布局约束经常使用"UISV隐藏"进行标记,这表明它可能应该忽略子视图的高度最小值或者此实例中的某些内容?
我有一个简单的横向 UIStackView
,里面堆叠了几个UIViews.我的目标是在视图之间创建可变间距.我很清楚我可以使用"spacing"属性在子视图之间创建恒定的空间.但是我的目标是创建可变空间.请注意,如果可能的话,我希望避免使用充当间隔物的隐形视图.
我想出的最好的方法是将我UIViews
的内容包装起来UIStackView
,并layoutMarginsRelativeArrangement = YES
用来尊重内部堆栈的布局边距.我希望我可以做任何类似的事情UIView
而不诉诸于这种丑陋的工作.这是我的示例代码:
// Create stack view
UIStackView *stackView = [[UIStackView alloc] init];
stackView.translatesAutoresizingMaskIntoConstraints = NO;
stackView.axis = UILayoutConstraintAxisHorizontal;
stackView.alignment = UIStackViewAlignmentCenter;
stackView.layoutMarginsRelativeArrangement = YES;
// Create subview
UIView *view1 = [[UIView alloc] init];
view1.translatesAutoresizingMaskIntoConstraints = NO;
// ... Add Auto Layout constraints for height / width
// ...
// I was hoping the layoutMargins would be respected, but they are not
view1.layoutMargins = UIEdgeInsetsMake(0, 25, 0, 0);
// …
Run Code Online (Sandbox Code Playgroud) 在removeArrangedSubview中:
要在调用堆栈的removeArrangedSubview:方法后阻止视图出现在屏幕上,请通过调用视图的removeFromSuperview方法显式删除子视图数组中的视图.
在安排的子视图中:
每当调用排列视图的removeFromSuperview方法时,堆栈视图就会从其arrangeSubview数组中删除视图
从这些看来,调用removeFromSuperview似乎足以删除子视图,我一直在使用它,没有问题.我还通过在调用removeFromSuperview时记录arrangeSubviews数组的计数来确认行为.
这里有很多关于S/O的教程和评论,比如说两者都叫.是否有一个原因?或者人们只是这样做,因为文档是这样说的?
我开始创造一个非常简单的tic-tac-toe游戏.主要目标是使视图与所有iOS设备的所有屏幕大小成比例.所以我将图像放在a上ViewController
,使其成为完整大小的屏幕,然后将其放入堆栈视图中.我已向所有方面添加了对此Stack View 0的约束.当我运行模拟器时,一切看起来都不错.但我在控制台面板中收到一条消息.这是什么意思?
在iOS 11中,隐藏动画在a中的行为UIStackView
已发生变化,但我无法在任何地方找到此文档.
iOS 10
iOS 11
两者中的代码是这样的:
UIView.animate(withDuration: DiscoverHeaderView.animationDuration,
delay: 0.0,
usingSpringWithDamping: 0.9,
initialSpringVelocity: 1,
options: [],
animations: {
clear.isHidden = hideClear
useMyLocation.isHidden = hideLocation
},
completion: nil)
Run Code Online (Sandbox Code Playgroud)
如何在iOS 11上恢复以前的行为?
uistackview ×10
ios ×9
ios9 ×4
swift ×3
uikit ×3
uiscrollview ×2
xcode7 ×2
animation ×1
autolayout ×1
objective-c ×1
uilabel ×1
xcode ×1