UITableViewCell 的 Nib 文件中视图的大小

Posted

技术标签:

【中文标题】UITableViewCell 的 Nib 文件中视图的大小【英文标题】:Size of view in Nib File for TableViewCell 【发布时间】:2015-09-18 10:32:42 【问题描述】:

我正在尝试获取 nib 文件中的 UIImageView 宽度以使其变为圆形,但我得到了错误的值

这是我的代码:

- (void)viewDidLoad 
[super viewDidLoad];
   //....
   UINib *cellNib = [UINib nibWithNibName:@"User_Row" bundle:nil];
   [_Menu_Table registerNib:cellNib forCellReuseIdentifier:@"user_row"];

在表格视图中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    User_Row *user_row = [tableView dequeueReusableCellWithIdentifier:@"user_row"];
    if (user_row == nil)
        NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"User_Row" owner:self options:nil];
        user_row = (User_Row *)[nibs objectAtIndex:0];
    
    [user_row.user_image layoutIfNeeded];
    user_row.user_image.layer.borderWidth = 3;
    user_row.user_image.layer.borderColor = [UIColor colorWithRed:40/255 green:62/255 blue:38/255 alpha:1].CGColor;
    CALayer *cellImageLayer = user_row.user_image.layer;
    NSLog(@"width is %f", user_row.user_image.frame.size.width);
    [cellImageLayer setCornerRadius:user_row.user_image.frame.size.width/2];
    [cellImageLayer setMasksToBounds:YES];
    return user_row;

【问题讨论】:

您实际看到了什么? “错误的价值”不是很有帮助 我想要设备中显示的大小,我认为它给了我 nib 文件中的大小,[user_row.user_image layoutIfNeeded]; 前后的值不同 【参考方案1】:
int imgHeight =  imageView.layer.frame.size.height;
int imgWidth = imageView.layer.frame.size.width;
NSLog(@"height of image %i",imgHeight);
NSLog(@"widht of image %i",imgWidth);

【讨论】:

【参考方案2】:

通过替换解决了:

[user_row.user_image layoutIfNeeded];

user_row.frame = CGRectMake(0, 0, self.view.frame.size.width, row_height);
[user_row layoutIfNeeded];

但我想要一个解释

【讨论】:

以上是关于UITableViewCell 的 Nib 文件中视图的大小的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 的 nib 文件中的自动布局

为啥 nib 文件中的 UITableViewCell(加载并添加到堆栈)在 viewDidAppear 中为零,但在 viewDidLoad 中没问题?

UITableViewCell 继承

以编程方式创建 UITableViewCell 或从 nib 加载是不是更快?

当在 nib 中声明 UITableView 时,UITableViewCell nil IBOutlets [重复]

如何调整自定义 UITableViewCell nib 文件的大小以适合 tableView?