UIScrollView 右侧的 Autolayout Pin 视图
Posted
技术标签:
【中文标题】UIScrollView 右侧的 Autolayout Pin 视图【英文标题】:Autolayout Pin view from right of UIScrollView 【发布时间】:2015-03-30 13:41:47 【问题描述】:我已将滚动视图固定在 IB 的左上右下,它工作正常。
我想在滚动视图中正确固定从笔尖加载的 UIView。
但它不起作用。
将我的视图添加到滚动视图,
当我将视图添加到 UIView 时,它可以正常工作,但不能在 ScrollView 中工作。 这是我的代码。
var constY = NSLayoutConstraint(item: circularView!, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.IBscrollView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
self.IBscrollView.addConstraint(constY)
var constW = NSLayoutConstraint(item: circularView!, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: screenWidth/2.5)
circularView?.addConstraint(constW)
//view.addConstraint(constW) also works
var constH = NSLayoutConstraint(item: circularView!, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: screenWidth/2.5)
circularView?.addConstraint(constH)
var rightPin = NSLayoutConstraint.constraintsWithVisualFormat("H:|-[myView]-40-|", options: nil, metrics: nil, views: dCircularViews)
self.IBscrollView.addConstraints(rightPin)
【问题讨论】:
【参考方案1】:尝试以下方法,而不是第一个约束:
var leadingConst = NSLayoutConstraint(item: circularView!, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: self.IBscrollView, attribute: NSLayoutAttribute.Right, multiplier: 1, constant: 0)
self.IBscrollView.addConstraint(leadingConst)
您可以保持所有其他约束不变。
【讨论】:
不,兄弟,它不适合我。我认为使用滚动视图有一些问题。【参考方案2】:我不完全确定您所说的“不起作用”是什么意思,但是当您说 pin 时,这是否意味着您不想在滚动 IBscrollView
时移动视图?在这种情况下,我建议查看此文档:
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutbyExample/AutoLayoutbyExample.html
如果您希望滚动视图滚动而不滚动 - 当使用 Autolayout 和 UIScrollView
时,您必须确保 NSLayoutConstraint
s,来自 UIScrollView
内的视图,连接到顶部和底部的UIScrollView
,因此它可以正确设置其contentSize
。这里谈到:http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/
【讨论】:
【参考方案3】:在所有方向设置自动布局约束后,尝试在 scrollView 中添加 UIView,名称为 contentView。在 viewDidLoad 方法中为 contentView 添加自动布局。使用 contentView 作为基础来添加其他项目,例如标签和按钮。设置与 contentView 相关的自动布局约束。目标 c 代码
-(void)ViewDidLoad
[super viewDidLoad];
NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.contentView
attribute:NSLayoutAttributeLeading
relatedBy:0
toItem:self.view
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:0];
[self.view addConstraint:leftConstraint];
NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:self.contentView
attribute:NSLayoutAttributeTrailing
relatedBy:0
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:1.0
constant:0];
[self.view addConstraint:rightConstraint];
查看本教程以获得完整指南:http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/
【讨论】:
以上是关于UIScrollView 右侧的 Autolayout Pin 视图的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 右侧的 Autolayout Pin 视图
是否可以将 UIScrollView 指示器从右侧移动到左侧?
启动使用 UIScrollView 的 UIPageControl 的 App 时,如何将默认页面设置在右侧而不是左侧(反向)?