why does this NSLog code print zero's for the values?

爱⌒轻易说出口 提交于 2019-12-11 07:28:55

问题


Why does this objective-c code print 0's for the values, where as in debugger I can see they have non-0 values:

Code

CGRect currFrame = label.frame;                 
currFrame.origin.y = currVertPos;
currFrame.origin.x = 0;
currFrame.size.height = expectedLabelSize.height;
currFrame.size.width = maxWidt  h;
NSLog(@"  currFrame dimensions:x/y/height/width = %d / %d / %d / %d", 0, currVertPos, expectedLabelSize.height, maxWidth);

What is Printed

currFrame dimensions:x/y/height/width = 0 / 0 / 0 / 0

回答1:


Because you are using %d hence formatting the number as integers. Try using %f or %lf instead:

NSLog(@"  currFrame dimensions:x/y/height/width = %f / %f / %f / %f", 0, currVertPos, expectedLabelSize.height, maxWidth);



回答2:


All these values have CGFloat type but you're trying to print them as ints. Just replace %d with %f.

P.S. Apple devs have to print CGRects occasionally so they came up with some handy methods. Try NSLog(@"currFrame dimensions: %@", NSStringFromCGRect(currFrame)).



来源:https://stackoverflow.com/questions/5254239/why-does-this-nslog-code-print-zeros-for-the-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!