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 或从 nib 加载是不是更快?