iphone - iOS 自动布局 : Resizing container with constraints
<p><p>我有一个 ScrollView ,里面有容器 View (<em>self.tagScrollContentView</em>)。那是在 Storyboard中。然后我生成按钮并以编程方式将它们放置在带有约束的容器 View 中。</p>
<pre><code>for(NSInteger i = 0; i < allTags.count; i++) {
UIButton *tagBt = [ initWithFrame:(CGRect){CGPointZero, tagSize.width + 30, 17}];
;
];
if(prevBtRow1)
];
else
];
];
prevBtRow1 = tagBt;
}
;
;
</code></pre>
<p>此代码将所有按钮排成一行,具体取决于它们的宽度。一切正常。然后我需要放大 <em>tagScrollContentView</em> 以使所有按钮都在此 View 内而不是在边界之外。然后为我的滚动分配等于容器 View 的正确内容大小。
不幸的是,滚动无法正常工作。内容大小不适合容器 View 。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>关键问题是您的 <code>contentSize</code> 没有设置,因为您没有将最后一个按钮从最后一个按钮添加到其 superView 。您可以在最后添加一个约束,您的 <code>contentSize</code> 将自动调整:</p>
<pre><code>for (NSInteger i = 0; i < allTags.count; i++) {
UIButton *tagBt = [ init];
tagBt.translatesAutoresizingMaskIntoConstraints = NO;
;
// add all of your constraints
prevBtRow1 = tagBt;
}
[constraintsArray addObject:[NSLayoutConstraint constraintWithItem:prevBtRow1
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.tagScrollContentView
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:10.0]];
;
</code></pre>
<p>有几个不相关的问题:</p>
<ol>
<li><p>我假设您有一个 <code>tagBt.translatesAutoresizingMaskIntoConstraints = NO;</code> 行没有进入您的代码示例。</p></li>
<li><p>如果您要设置约束,那么执行 <code>initWithFrame</code> 毫无意义。 <code>init</code> 就足够了。</p></li>
<li><p>我建议您也为您的按钮添加一个高度约束,这样它的约束就会变得明确。</p></li>
<li><p>顺便说一下,您正在向 superView 添加按钮宽度约束。无论哪种方式,它都可以工作,但通常您向最近的公共(public)父级添加一个约束,对于宽度约束,这将是按钮本身,而不是它的父 View 。</p></li>
</ol></p>
<p style="font-size: 20px;">关于iphone - iOS 自动布局 : Resizing container with constraints,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/16759212/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/16759212/
</a>
</p>
页:
[1]