ios - UILabel 获取底部空间约束 - 自动布局
<p><p>我在 <code>UITableView</code> 中有多个原型(prototype)单元格。现在在其中一个单元格中,我有一个带有 <code>top</code>、'bottom'、<code>leading</code> 和 <code>trailing</code> 约束的 UILabel。我希望以编程方式修改 <code>bottom</code> 约束。如何在我的代码中评估此约束?</p>
<p>我已经在 <code>xib</code> 中为这个约束赋予了 <code>identifier</code>,但是当我执行 <code>lbl.constraints</code> 时,我只得到了以下约束的数组:</p>
<pre><code> po lbl.constraints
<__NSArrayI 0x7f987fb81a60>(
<NSContentSizeLayoutConstraint:0x7f987faca450 H: Hug:251 CompressionResistance:750>,
<NSContentSizeLayoutConstraint:0x7f987faca4b0 V: Hug:251 CompressionResistance:750>
)
</code></pre>
<p>为什么没有显示尾随、前导、底部和顶部约束?我哪里错了?我该如何解决?</p>
<p><strong>编辑(未反射(reflect)约束更改)</strong></p>
<pre><code>-(IBAction)btnShowCtrl_click:(id)sender{
FormTableViewCell *cell = (FormTableViewCell *) count]+4]];
if(cell.nlcTextField.priority == 999){
cell.nlcLabel .priority = 999;
cell.nlcTextField.priority = 500;
} else {
cell.nlcLabel .priority = 500;
cell.nlcTextField.priority = 999;
}
[UIView animateWithDuration:.5 animations:^{
// self.orangeView.alpha = 0;
;
count]+4]] withRowAnimation:UITableViewRowAnimationNone];
;
;
}];
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我建议为您的单元格创建一个 <code>UITableViewCell</code> 子类。例如,如果你只有一个标签,并且你想要一个底部约束的导出,它可能看起来像:</p>
<pre><code>//CustomCell.h
#import <UIKit/UIKit.h>
@interface CustomCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *customLabel;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomConstraint;
@end
</code></pre>
<p>和</p>
<pre><code>//CustomCell.m
#import "CustomCell.h"
@implementation CustomCell
// intentionally blank
@end
</code></pre>
<p>然后,将其指定为原型(prototype)的基类:</p>
<p> <a href="/image/D6NQp.png" rel="noreferrer noopener nofollow"><img src="/image/D6NQp.png" alt="enter image description here"/></a> </p>
<p>那么你不仅可以将 socket 连接到标签,还可以连接底部约束:</p>
<p> <a href="/image/wgZfs.png" rel="noreferrer noopener nofollow"><img src="/image/wgZfs.png" alt="enter image description here"/></a> </p>
<p>然后在您的 <code>cellForRowAtIndexPath</code> 中,您不仅可以避免使用 <code>tag</code> 引用(只需使用您连接的 <code>customLabel</code>socket ),而且您也可以引用底部约束:</p>
<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomCell *cell = ;
cell.customLabel.text = @"Foo";
cell.bottomConstraint.constant = 100;
return cell;
}
</code></pre>
<p>顺便说一句,如果您正在修改底部约束,您可能想告诉表格 View 它应该根据约束自动调整单元格的大小,例如在 <code>viewDidLoad</code> 中:</p>
<pre><code>- (void)viewDidLoad {
;
self.tableView.estimatedRowHeight = 44;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
</code></pre>
<p>有关详细信息,请参阅 WWDC 2014 视频 <a href="https://developer.apple.com/videos/play/wwdc2014-226/" rel="noreferrer noopener nofollow">What's New in Table and Collection Views</a> .</p>
<p>(对于 Swift 版本,请参阅此问题的修订历史记录。)</p></p>
<p style="font-size: 20px;">关于ios - UILabel 获取底部空间约束 - 自动布局,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/34194184/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/34194184/
</a>
</p>
页:
[1]