我们正在尝试以编程方式在我们游戏的iOS主视图中添加UIView(FB Like按钮)(*游戏使用Unity构建)。
添加类似按钮的代码:
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 :(得分: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);