【问题标题】:CGFloat value from frame.height来自 frame.height 的 CGFloat 值
【发布时间】:2021-05-03 11:57:12
【问题描述】:

我遇到了一些非常愚蠢的事情:无法使用 CGFloat 从视图大小获取操作。有人可以帮助我并解释我做错了什么:

代码如下:

 CGFloat containedViewHeight = self.containedView_.frame.size.height;
 NSLog(@"========================   containedViewHeight  ================= %d", containedViewHeight);
 NSLog(@"========================   containedViewHeight1  ================= %d", self.containedView_.frame.size.height);

这是我得到的:

 ========================   containedViewHeight  ================= 1587588653

 ========================   containedViewHeight1  ================= 775

值“775”看起来不错,但我无法将其保存到任何变量中。 我也尝试过这样的事情:

int offset = containerHeight - (int)(self.containedView_.frame.size.height);

(int)(self.containedView_.frame.size.height) 总是等于 0

请告诉我哪里出了问题...

*** 如果我使用 %f 作为内部日志,那么我得到的:

========================   containedViewHeight  ================= 0.000000
=======================   containedViewHeight1  ================= 0.000000

【问题讨论】:

    标签: ios objective-c cgfloat


    【解决方案1】:

    您将 %d 传递给 NSLog 的字符串格式。这将 containedViewHeight 解释为整数。你想要%f

    【讨论】:

    • 感谢您的回答,但它不起作用:
    • ================== containsViewHeight ================= 0.000000 ===== ============包含ViewHeight1 ================= 0.000000
    • 那么我希望self.containedView_.frame.size.height 为零。为什么你认为这是另一回事?
    • 因为视图存在于屏幕上,而且我还使用 %d 打印了另一个值
    • 它存在于屏幕上并不意味着 这个变量 具有您在阅读它时所期望的帧。它可能会在不同的时间调整大小,或者屏幕上的视图可能是不同的对象。使用%d 不会告诉您任何信息,因为它错误地解码了内存。这并不意味着“将其转换为 int”。它的意思是“读取这个原始内存,我向你保证它是一个 int。”您可以使用调试器仔细检查。我希望该值为 0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2020-03-20
    • 1970-01-01
    • 2010-11-16
    相关资源
    最近更新 更多