UIScrollView右侧的Autolayout Pin视图

时间:2015-03-30 13:41:48

标签: ios swift autolayout

我已将我的滚动视图固定在IB的左上角 - 右上角,它工作正常。

我希望在滚动视图中正确地从nib加载我的UIView。

但它没有用。

将我的观点添加到scrollview,

  

当我将我的视图添加到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)

3 个答案:

答案 0 :(得分:0)

而不是第一个约束尝试以下内容:

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)

您可以保持所有其他约束相同。

答案 1 :(得分:0)

我不完全确定你的意思是什么并不工作'但是当你说pin时,这是否意味着当IBscrollView滚动时你不想让视图移动?在这种情况下,我建议查看此文档:  https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutbyExample/AutoLayoutbyExample.html

如果您希望滚动视图滚动且不是 - 在使用Autolayout和UIScrollView时,您必须确保NSLayoutConstraint内的UIScrollView视图},连接到UIScrollView的顶部和底部,以便正确设置其contentSize。这里讨论的是:http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

答案 2 :(得分:0)

在所有方向设置自动布局约束后,尝试在名为contentView的scrollView中添加UIView。在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/