【问题标题】:Autolayout Pin view from right of UIScrollViewUIScrollView 右侧的 Autolayout Pin 视图
【发布时间】: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)

【问题讨论】:

    标签: ios swift autolayout


    【解决方案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 时,您必须确保 NSLayoutConstraints,来自 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/

      【讨论】:

        猜你喜欢
        • 2014-03-04
        • 1970-01-01
        • 2022-07-22
        • 2016-04-10
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 2013-05-26
        相关资源
        最近更新 更多