objective-c - 没有简单的划分

标签 objective-c ios

我正在尝试通过调用以下方法来为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/

相关文章:

ios - 尝试使用 Firebase 动态链接,无法在 iOS 上打开应用

objective-c - UIScrollView 的最大缩放比例

iphone - 一起使用 AVCaptureSession 和 AVAudioPlayer

ios - 在 Xcode 的 Storyboard中使用另一个 UIView 创建和加载 View

ios - 1 为企业和 App Store 打造的应用程序

ios - 仅当应用程序处于后台时隐藏 APN 通知?

ios - PFImageView 未显示在窗口中

ios - 创建一个与二维数组数据结构一起使用的新 IndexPath(使用 Swift 进行应用程序开发,项目 EmojiDictionary,第 556 页)

objective-c - 如何在 iOS 5 运行时上 stub /注入(inject) View Controller 以进行基于状态的测试?

objective-c - Swift 代码可以嵌入现有的 Objective-C 文件中吗?还是必须将该代码添加到离散的 Swift 文件中?