我有TableViewCell并通过Web服务(JSON)加载数据,数据存储在不同的数组中,数据加载在tableview中。我希望将数据大小放大一段时间,并将时间缩短一些。那么如何管理标签尺寸。我试过可能的例子,但不做动态标签。请帮忙,谢谢。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [title count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//NSLog(@"tableview cell");
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"event"];
if (cell==nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Cell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: [img objectAtIndex:indexPath.row]]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
cell.img.image =image;
cell.lbl_1.text=[NSString stringWithFormat:@"%@",[title objectAtIndex:indexPath.row]];
cell.lbl_2.text=[NSString stringWithFormat:@"%@",[des objectAtIndex:indexPath.row]];
cell.lbl_3.text=[NSString stringWithFormat:@"%@",[evnt_ary objectAtIndex:indexPath.row]];
return cell;
}
答案 0 :(得分:3)
请检查UITableViewAutomaticDimension
并将其用作:
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableView.automaticDimension
确保您的约束正确。
答案 1 :(得分:1)
在为该标签指定文字后,您只需要写 [yourCell.yourlabel sizeToFit] 。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
yourCell.yourlabel.text = @"text whatever you want to set";
[yourCell.yourlabel sizeToFit];
}
同时为 yourCell.yourlabel 指定文字,并在heightForRowAtIndexPath中写下[yourCell.yourlabel sizeToFit]。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
yourCustomCell *yourCellObj = (yourCustomCell *)[self tableView:self.tableViewObj cellForRowAtIndexPath:indexPath];
yourCellObj.yourlabel.text = @"text whatever you want to set";
[yourCellObj.yourlabel sizeToFit];
return (yourCellObj.yourlabel.frame.origin.y + yourCellObj.yourlabel.frame.size.height);
}
答案 2 :(得分:0)
首先,为tableView使用自定义单元格。如果直接在tableView上使用label,则在动态更改大小时会导致加载问题。
然后在" cellForRowAtIndexPath"中,您可以更改其属性。例如,如果" TableCell"是你的自定义单元格
.child
答案 3 :(得分:0)
CGSize maximumSize = CGSizeMake(width_specified, CGFLOAT_MAX);
CGSize myStringSize = [myString sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.myLabel.lineBreakMode];
您可以计算字符串所需的高度,以适合给定宽度的标签或文本视图。
您还需要指定字符串的字体。即。字符串容器中使用的字体。
答案 4 :(得分:0)
你必须获得动态宽度和宽度高度取决于标签的内容(文本),因此您可以使用以下功能,它将返回CGSize,您只需传递您的标签参数。
(int) strtol(str, (char **)NULL, 10)
答案 5 :(得分:0)
plz取桌子的出口
@property (strong, nonatomic) IBOutlet UITableView *view_tableView;
- (void)viewDidLoad {
[super viewDidLoad];
self.view_tableView.estimatedRowHeight = 50;
self.view_tableView.rowHeight = UITableViewAutomaticDimension;
// Do any additional setup after loading the view, typically from a nib.
}
#pragma mark - TableView Delegate And DataSource
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"mycell"];
UILabel *label =(UILabel *)[cell viewWithTag:5000];
label.text=@"Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.2016-07-15 15:22:28.819 Time'nTask[257:14278] Notification settings registered2016-07-15 15:22:28.820 Time'nTask[257:14278] Successfully registered for remote notifications With device Token 68048cc293d695fd3220cf63da3baa685675126ecd72af0547b760ee31571b62";
return cell;
}
rember set line number of line = 0