我正在尝试通过调用以下方法来为UITableViewCell和UIImageView计算适当的高度:
-(void)ratioCalculator
{
picH = image.size.height;
picW = image.size.width;
NSLog(@"%d = width %d = height", picW, picH);
picRatio = (picW/picH);
NSLog(@"%F", picRatio);
imageViewH = (260/picRatio);
NSLog(@"%d int", imageViewH);
return;
}
问题是,当它被调用时,由于控制台上的说明,
picRatio = (picW/picH);
似乎没有发生:2012-11-18 21:56:48.787 Name[5374:c07] 640 = width 360 = height
2012-11-18 21:56:48.788 Name[5374:c07] 1.000000
2012-11-18 21:56:48.788 Name[5374:c07] 260 int
1.000000是float
picRatio
,而260是imageViewH
。显然,这意味着UITableViewCell和UIImageView使用了不正确的高度,它们的计算方式如下:else {
[self ratioCalculator];
return (imageViewH + 20);
}
和
- (void)showImage:(UIImage *)theImage
{
self.imageView.image = theImage;
self.imageView.hidden = NO;
[self ratioCalculator];
self.imageView.frame = CGRectMake(10, 10, 260, imageViewH);
self.photoLabel.hidden = YES;
}
像这样一个愚蠢的问题,为什么这个简单的部门不起作用?同样,如果这是一个愚蠢的问题,对不起,但这让我感到困惑。我觉得我快要疯了。
任何帮助将不胜感激,
问候,
麦克风
最佳答案
picRatio = ((float)picW/(float)picH);
在划分之前,Objective-c需要正确的iVar类型分配。
当您将2个整数相除时,输出不是浮点数,而是一个整数。
因此640/360 = 1.777,这被视为一个整数,因此十进制值将被忽略,这将为您提供1。
如果执行我写的操作,实际上会产生一个浮点数,并为您提供1.777输出。
关于objective-c - 没有简单的划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445132/