我试图构建具有类似于twitter的tableview单元格的应用程序,有文本和图像。 我的问题是我想在文本上方插入图像。虽然它可以只是文本。 因此,如果没有图像,则文本将位于(0,0)位置。如果有图像,它将是(0,306)位置。
我是否必须以编程方式使用或使用自动布局?
欣赏答案。感谢..
答案 0 :(得分:1)
如果使用AutoLayout,请使用此代码
您尝试设置div.blue
属性UITableView
。
estimatedHeight
其他明智的使用此-(void)viewWillAppear:(BOOL)animated{
_messageField.delegate = self;
_tableView.estimatedRowHeight = 65.0;
_tableView.rowHeight = UITableViewAutomaticDimension;
}
委托方法
UITableView
答案 1 :(得分:0)
最好以编程方式使用此委托
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
答案 2 :(得分:0)
使用AutoLayout,只需获取NSLayoutConstraint并将其绑定到标签的Top Space约束。您还需要计算标签的大小,以根据内容调整单元格高度。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//If image exists, set the value of the constraint to 306, else set it to 0
constraintName.constant = 306;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat labelHeight = [self findHeightForText:labelMe.text havingWidth:labelWidth andFont:[UIFont systemFontOfSize:22];
return labelHeight + paddingHeight;
}
//Method to calculate label height
- (CGFloat)findHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font {
CGSize size = CGSizeZero;
if (text) {
#ifdef __IPHONE_7_0
CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:font } context:nil];
size = CGSizeMake(frame.size.width, frame.size.height);
#else
size = [text sizeWithFont:font constrainedToSize:CGSizeMake(widthValue, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];
#endif
}
return size.height;
}
答案 3 :(得分:0)
试试这个
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//calculating the height according to the device height.
return self.view.frame.size.height * (102.0 / 568.0);
}
其中102.0将是当前高度,根据当前设计的xib高度568.0。这将根据高度调整单元格的大小。