TableView高度无法在IOS

时间:2015-05-29 05:31:38

标签: ios objective-c iphone uitableview

我正在尝试做这样的事情,我有一个UIViewControler。因此,在我的故事板中,我将UITableView拖放到视图中。我应该在该表视图中显示少量自定义行。但我想动态更改该表视图的高度。(根据表视图中的行数)。

我尝试了下面的代码,但到目前为止没有任何工作。

CGRect tvframe = [tableView frame];
 [tableView setFrame:CGRectMake(tvframe.origin.x, 
                            tvframe.origin.y, 
                            tvframe.size.width, 
                            tvframe.size.height + 20)];

我也试过这个

    CGRect frame = self.tableView.frame;
    frame.size = self.tableView.contentSize;
    self.tableView.frame = frame;

但没有任何对我有用..请有人告诉我我该怎么做。

谢谢。

7 个答案:

答案 0 :(得分:1)

在Autolayout中,如果您想更改框架,请尝试约束(IBOutlet的{​​{1}})。

enter image description here

设置约束出口并通过以下方式更改NSLayoutConstraint值:

constant

答案 1 :(得分:1)

我希望这个答案可以帮助你...

对于动态TableviewCell高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *OptName_length = @" Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam";
NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:17.0]};
CGRect rect = [OptName_length boundingRectWithSize:CGSizeMake(tableView.bounds.size.width-150.0, MAXFLOAT)
                                              options:NSStringDrawingUsesLineFragmentOrigin
                                           attributes:attributes
                                              context:nil];

CGSize requiredSize = rect.size;
return requiredSize.height +5.0f;
}

值150.0是单元格中标签或文本视图的静态宽度。 OR apprx在标签的前导或尾随中的其他元素的宽度或水平空间值。将前导,尾随,顶部和底部约束设置为单元格中的textview,不要设置静态高度

将tableview高度调整为no。细胞......

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
[self adjustHeightOfTableview];
}

- (void)adjustHeightOfTableview
{
CGFloat height = tblMainMenu.contentSize.height;
CGFloat maxHeight = tblMainMenu.superview.frame.size.height - tblMainMenu.frame.origin.y;

// if the height of the content is greater than the maxHeight of
// total space on the screen, limit the height to the size of the
// superview.

if (height > maxHeight)
    height = maxHeight;

// now set the height constraint accordingly
self.tableViewHeightConstraint.constant = height;
[UIView animateWithDuration:0.1 animations:^{
    [self.view setNeedsUpdateConstraints];
}];
}

Tableview auto layout constraint image

答案 2 :(得分:0)

CGRect frame = self.tableView.frame;
frame.size.height = resourceArray.count*row_height;
self.tableView.frame = frame;

答案 3 :(得分:0)

请使用此

tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

答案 4 :(得分:0)

尝试以下代码,

CGFloat height = self.tableView.rowHeight;
height *= [myArray count];

CGRect tableViewFrame = self.tableView.frame;
tableViewFrame.size.height = height;
self.tableView.frame = tableViewFrame;

答案 5 :(得分:0)

试试这个:

open (INFILE, $ARGV[1]) or die "An input file is required as argument\n";   
@store=();
while(<INFILE>)
{
chomp();
@data=split(/,/);
#
#
#
  if (%store ne "0")
    {
    print "Printing users:\n";
    foreach $key (keys %store)
    {print $key."\n";}
}
print "Printing users:\n";
    foreach $key (keys %store)
    {print $key."\n";}
}

答案 6 :(得分:0)

我希望它有所帮助......

如果您的行数是固定的,那么你可以在没有动态约束的情况下做到这一点。

在您的项目.h文件..

foreach ($array1 as $key => $value) 
{
   foreach ($array2 as $key1 => $value1) 
    {
       if($value['DispensaryInventory']['product_option_id']==$value1['DriverInventory']['product_option_id'])
            {
                $price_data[$key]['Mydata'] = $value1['Mydata'];
            }
    }
}

在您的项目.m文件

UITableView *tbl;
int numOfRows;
float tableViewheight,tableViewWidth,heightForRow;