【发布时间】:2015-02-05 14:50:46
【问题描述】:
我试图使用内容大小调整单元格的大小,但我知道在 IOS 8 中您可以使用自动布局调整单元格的大小。我尝试了同样的方法,但我无法获得确切的用户界面。我在 UIView 控制器中有一个 TableView。这是我的代码 viewcontroller.m :-
@implementation MessageViewController
@synthesize messageTable;
- (void)viewDidLoad {
self.messageTable.estimatedRowHeight = 70.0;
self.messageTable.rowHeight = UITableViewAutomaticDimension;
[super viewDidLoad];
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
self.navigationController.toolbarHidden=NO;
_txtField=[[UITextView alloc] initWithFrame:CGRectMake(40, 5, 220, 30)];
[_txtField setFont:[UIFont systemFontOfSize:15]];
_txtField.layer.cornerRadius = 7.0;
_txtField.clipsToBounds = YES;
_txtField.text=@"Hello";
[self.navigationController.toolbar addSubview:_txtField];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Send" forState:UIControlStateNormal];
button.frame = CGRectMake(265.0, 5, 50.0, 30.0);
[self.navigationController.toolbar addSubview:button];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
// table view data is being set here
_messageArray = [[NSMutableArray alloc]initWithObjects:
@"Data 2 ",@"Data 1 Data 1Data 1Data 1Data 1Data 1Data 1Data 1Data 1D",@"Data 8 ",
@"Data 9 ", nil];
[self.messageTable reloadData];
// Do any additional setup after loading the view.
}
用户界面看起来像这样:-
标签的限制是:-
需要帮助:)
编辑:-
细胞
【问题讨论】:
-
为什么不在 heightForRowAtIndexPath 中计算每一行的高度??
-
我想在单元格中添加更多元素,例如 UIImage 等。自动布局可以很容易地提供间距和边距,这就是我使用自动布局的原因。
-
Autolayout 可以帮助您在单元格内组织视图,并且在
heightForRowAtIndexPath:中设置高度将使视图布局考虑到单元格视图的大小。因此,例如,您的边距空间仍将使用您的约束正确完成。 -
我并不是说不要使用 Autolayout,但是如果你实现 heightForRowAtIndexPath 并计算你的高度,你会得到更好的结果。如果我从您所说的内容中理解,您需要的唯一计算是标签的高度。
-
恐怕我不明白预期的输出是什么意思或确切的问题是什么。是标签的大小不正确(您是否更改了它的背景颜色以检查它是否正在调整大小)还是正在绘制太多单元格?您还没有添加任何 tableview 委托方法,所以我假设您已经检查过每个方法都返回了正确的值。最后,您是否尝试过视图调试器(如果您认为这是错误的,请检查单元格中的约束)?
标签: ios objective-c iphone uitableview autolayout