UIView frame.width正确大小不正确(在iOS 6设备上)
问题描述:
我们试图以编程方式在iOS上为我们游戏的主视图添加UIView(FB Like按钮)(*游戏使用Unity构建)。UIView frame.width正确大小不正确(在iOS 6设备上)
添加类似按钮的代码:
like = [[FBLikeControl alloc] init];
// Calculate position.
int screenWidth = UnityGetGLViewController().view.bounds.size.width;
int screenHeight = UnityGetGLViewController().view.bounds.size.height;
int likeWidth = like.frame.size.width;
int likeHeight = like.frame.size.height;
int xPos = screenWidth - likeWidth;
int yPos = screenHeight - likeHeight;
like.frame = CGRectMake(xPos, yPos, likeWidth, likeHeight);
[UnityGetGLViewController().view addSubview:like];
在大多数设备上,我们已经测试了这个效果很好,并显示在正确的位置的按钮(右下角)。
在一些iOS设备(运行iOS 6)上,该按钮被切断。它看起来像它的frame.width等于正确大小的正好0.5(一半)!但只有宽度...
可能是什么原因呢?这是一些与iOS 6或特定设备有关的已知错误吗?或者我们的代码不正确?
答
我建议尝试使用initWithFrame:方法构造按钮,并为其提供修复宽度和高度。 我知道这不是最好的答案,但是我研究了这个类,它有代码,当你不提供它时,它应该计算它的大小。这个代码有可能存在一个错误,但我不确定。你可以通过使用CGGeometry.h中的帮助器方法来检索框架信息:(CGRectGetHeight(),CGRectGetWidth(),CGRectGetMinX(),CGRectGetMinY()。在int情况下使用CGFloat也是从我的角度来看是个好主意。)
CGFloat screenWidth = CGRectGetWidth(UnityGetGLViewController().view.bounds);
CGFloat screenHeight = CGRectGetHeight(UnityGetGLViewController().view.bounds)
CGFloat likeWidth = CGRectGetWidth(like.frame);
CGFLoat likeHeight = CGRectGetHeight(like.frame);
什么是'width'你看到的价值?你确定你没有把'frame'和'bounds'混淆吗? – 2015-01-21 12:49:24