UIScrollView,Autolayout和子视图

时间:2015-09-04 02:02:33

标签: ios objective-c iphone uiscrollview autolayout

我遇到了autolayout的问题,似乎无法找到应该很容易实现的东西的答案。

我有以下视图层次结构:

page3.html (workaround)

<body>
<ons-page>

<ons-tabbar>
  <ons-tab page="home.html" active="true">
    <ons-icon icon="ion-home"></ons-icon>
    <span style="font-size: 14px">Home</span>
  </ons-tab>
  <ons-tab page="favo.html" active="true">
    <ons-icon icon="ion-star"></ons-icon>
    <span style="font-size: 14px">Favorite</span>
  </ons-tab>
  <ons-tab page="settings.html" active="true">
    <ons-icon icon="ion-social-twitter"></ons-icon>
    <span style="font-size: 14px">Bird</span>
  </ons-tab>
</ons-tabbar>

</ons-page>

<ons-template id="favo.html">
  <p>Your favorite music.</p>
  <p>Your favorite food.</p>
  <p>Your favorite toy.</p>
  <p>Your favorite snack.</p>
</ons-template>

<ons-template id="dummy_1.html">
  <p></p>
</ons-template>

<ons-template id="home.html">
  <p>Green home</p>
  <p>White home</p>
  <p>Pink home</p>
</ons-template>

<ons-template id = "dummy_2">
  <p></p>
</ons-template>

<ons-template id="settings.html" >
  <div  ng-app="magic_land"  >
    <div   ng-controller="morning">
        <p> Cindy, {{greetings}} </p>
    </div>

    <div   ng-controller="afternoon">
        <p> Cindy, {{greetings}} </p>
    </div>

    <div   ng-controller="evening">
        <p> Cindy, {{greetings}} </p>
    </div>
  </div>
</ons-template>


</body>

标签上的前导/尾随限制使它们在更薄的设备上更高(iPhone 4s与iPhone 6)。

为了使UIScrollview正常工作,我需要在UIScrollView内部设置UIView的高度约束,以避免出现“模糊高度”警告。

但是当在iPhone 4s上运行时,UIView还不够高,无法保存其子视图。

到目前为止,我唯一的解决方案是在UIView上创建对高度约束的引用,并在视图出现时更新高度约束:

-UIScrollview
  -UIView
     - UILabel
     - UILabel
     - UILabel

我认为必须有更好的方法来做一些如此简单的事情。

我已附上图片以详细说明问题。

感谢您的时间。

enter image description here

在下面的@Katty中,使宽度/高度等于scrollview的超级视图会导致更大的问题:

enter image description here

3 个答案:

答案 0 :(得分:1)

您正在使用的视图层次结构是正确的。基本上您需要做的是在您的子视图(在Scrollview内),您需要对齐自动布局w.r.t. scrollview的顶部,底部,前导和尾部,需要为子视图提供Equal Height,这基本上计算了scrollview的内容大小。

答案 1 :(得分:1)

相对于UIScrollView和Height设置拖尾前导顶部,并使用具有主视图的命题比率的固定设置

首先设置等高和宽度然后设置命题乘数。 跳过那个图像可以帮助你理解我试图解释你的内容。

Here is the image that will help to understand

答案 2 :(得分:1)

与其他开发人员一起审核后,我发现了这个问题。容器中的底部子视图需要底部约束。这解决了这个问题。

感谢所有花时间帮助解决问题的人。

enter image description here