我在UITableView
中有多个原型单元格。现在,在其中一个单元格中,我有一个带有top
,“底部”,leading
和trailing
约束的UILabel。我希望以编程方式修改bottom
约束。如何在代码中评估此约束?
我在identifier
中给了xib
这个约束,但是当我做lbl.constraints
时,我得到了以下约束的数组:
po lbl.constraints
<__NSArrayI 0x7f987fb81a60>(
<NSContentSizeLayoutConstraint:0x7f987faca450 H:[UILabel:0x7f98815f4660'Schedule Showing'(117)] Hug:251 CompressionResistance:750>,
<NSContentSizeLayoutConstraint:0x7f987faca4b0 V:[UILabel:0x7f98815f4660'Schedule Showing'(16.5)] Hug:251 CompressionResistance:750>
)
为什么这不显示尾随,领先,底部和顶部约束?我哪里出错了?我该如何解决这个问题?
编辑(未反映约束更改)
-(IBAction)btnShowCtrl_click:(id)sender{
FormTableViewCell *cell = (FormTableViewCell *)[_tblView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:[[dictData valueForKey:@"FeatureList"] 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;
[_tblView beginUpdates];
[_tblView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:[[dictData valueForKey:@"FeatureList"] count]+4]] withRowAnimation:UITableViewRowAnimationNone];
[_tblView endUpdates];
[cell layoutIfNeeded];
}];
}
答案 0 :(得分:1)
我建议为您的单元格创建一个Symfony
子类。例如,如果您只有一个标签,并且您想要一个底部约束的出口,它可能看起来像:
{{ form_widget(form.content, { 'attr': {'class': 'tinyMCE', 'data-theme': 'advanced'} }) }}
和
UITableViewCell
然后,将其指定为原型的基类:
然后,您不仅可以连接标签的出口,还可以连接底部约束:
然后在// CustomCell.h
#import <UIKit/UIKit.h>
@interface CustomCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *customLabel;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomConstraint;
@end
中,您不仅可以避免使用// CustomCell.m
#import "CustomCell.h"
@implementation CustomCell
// intentionally blank
@end
引用(只需使用您连接的cellForRowAtIndexPath
出口),还可以引用底部约束:
tag
顺便说一下,如果您正在修改底部约束,您可能想告诉表视图它应该根据约束自动调整单元格大小,例如在customLabel
中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell" forIndexPath:indexPath];
cell.customLabel.text = @"Foo";
cell.bottomConstraint.constant = 100;
return cell;
}
有关详细信息,请参阅WWDC 2014视频What's New in Table and Collection Views。
(对于Swift演绎,请参阅此问题的修订历史。)
答案 1 :(得分:0)
如果UILabel,您需要绑定IBOutlet以获得底部约束。如何操作请点击此链接:AutoLayout with hidden UIViews?