2015-01-21 85 views
0

我们试图以编程方式在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或特定设备有关的已知错误吗?或者我们的代码不正确?

+0

什么是'width'你看到的价值?你确定你没有把'frame'和'bounds'混淆吗? – 2015-01-21 12:49:24

回答

0

我建议尝试使用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);