gpt4 book ai didi

ios - UIImageView 加倍并改变大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:55 26 4
gpt4 key购买 nike

我有一段时间让我发疯的问题,我无法解释出了什么问题。我有一个具有不同 View 的 UITableView 和 3 个可供选择的原型(prototype)单元格。如果我处于群组模式,我会显示 Storyboard中的原型(prototype) applicationCell。第一个条目看起来总是没问题,但如果我有 2 个,则第二个条目中的图像会加倍并调整图像大小,以便显示两次 - 以正确的大小再次调整为单元格高度(每个单元格中也只有一个图像),请参见图像:

enter image description here

这里是导致问题的相关代码:

- (UITableViewCell *)tableView:(UITableView *)table
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if(app == nil && groupedMode) {
UITableViewCell *cell = [table dequeueReusableCellWithIdentifier:@"applicationCell"
forIndexPath:indexPath];
UILabel *head = (UILabel*)[cell viewWithTag:2];
UILabel *badge = (UILabel*)[cell viewWithTag:3];
UILabel *lastMsg = (UILabel*)[cell viewWithTag:4];
UIImageView *imgView = (UIImageView*)[cell viewWithTag:1];
ApplicationEntity *a = [applications objectAtIndex:indexPath.row];
head.text = a.name;
badge.text = [NSString stringWithFormat:@"%lu",(unsigned long)a.messages.count];
ImagesEntity *ie = [ImagesEntity imageByAppId:a.appToken imgId:0];
NSLog(@"V %li",(long)indexPath.row);
//imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.image = ie.computedImage;
CGRect r = imgView.bounds;
NSLog(@"bounds %f %f %f %f",r.origin.x,r.origin.y,r.size.width,r.size.height);
r = imgView.frame;
NSLog(@"frame %f %f %f %f",r.origin.x,r.origin.y,r.size.width,r.size.height);
imgView.bounds = CGRectMake(0,0,48,48);
imgView.frame = CGRectMake(11,2,48,48);
cell.tag = indexPath.row;
if(cell.gestureRecognizers.count == 0) {
UITapGestureRecognizer * gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(applicationClicked:)];
[cell addGestureRecognizer:gr];
}
lastMsg.text = [dateFormatter stringFromDate:a.lastMessage];
r = imgView.bounds;
NSLog(@"after bounds %f %f %f %f",r.origin.x,r.origin.y,r.size.width,r.size.height);
r = imgView.frame;
NSLog(@"after frame %f %f %f %f",r.origin.x,r.origin.y,r.size.width,r.size.height);
return cell;
}

UIImageView 有一个 width = height = 48 的约束。到目前为止我测试和发现的内容:

  1. 将图像设置为 nil 显示无图像 = 无错误
  2. 不分配新图像不会显示错误。
  3. 仅分配一次新图像有效。
  4. 当它发生时,UIImageView 获得了新的边界和框架,但是将它们直接设置回正确的值无助于查看日志

    V 0界限 0.000000 0.000000 48.000000 48.000000框架 11.000000 2.000000 48.000000 48.000000在界限之后 0.000000 0.000000 48.000000 48.000000帧后 11.000000 2.000000 48.000000 48.0000001界限 0.000000 0.000000 320.000000 110.000000框架 0.000000 110.000000 320.000000 110.000000在界限之后 0.000000 0.000000 48.000000 48.000000帧后 11.000000 2.000000 48.000000 48.000000

110 高度是单元格高度,320 是宽度。它违反了约束。此外,我分配的图像是 96x96 像素,因此在 HDPI 显示器中显示效果很好。

顺序和图像可能会发生变化,因此我需要分配正确的图像。

知道为什么会发生这种情况以及如何防止这种情况发生吗?

最佳答案

在通过谷歌搜索相关答案后,我至少找到了一个解决方案和一个想法。

表格单元格已经有自己的图像。还有我的代码

UIImageView *imgView = (UIImageView*)[cell viewWithTag:1];

应该返回我的 UIImageView,因为它是唯一带有标签 1 的集合。显然它不是。在 Storyboard 和代码中将标签更改为 10 解决了它。所以我正在以某种方式更改单元格的背景图像。

奇怪的是,另一种模式也有以图像为标签 1 的原型(prototype)单元,它们没有这种问题。所以我仍然不知道为什么会发生这种情况,但至少我知道如何解决它。希望这对遇到类似问题的其他人有用。

关于ios - UIImageView 加倍并改变大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com