变换后的uibutton更改高度和setFrame不起作用。在这之后。帮我。我的代码在这里:
NSLog(@"BEFORE_Frame_height = %f", nameBgBtn.frame.size.height);
NSLog(@"BEFORE_Bound_height = %f", nameBgBtn.bounds.size.height);
nameBgBtn.transform = CGAffineTransformMakeRotation(degreesToRadian(rndValue));
CGRect newFrame = CGRectMake(nameBgBtn.frame.origin.x,nameBgBtn.frame.origin.y, nameBgBtn.bounds.size.width, nameBgBtn.bounds.size.height);
[nameBgBtn setFrame: newFrame];
[nameBgBtn setBounds:newFrame];
NSLog(@"After_Frame_height = %f", nameBgBtn.frame.size.height);
NSLog(@"After_Bount_height = %f", nameBgBtn.bounds.size.height);
我的记录器:
2013-03-07 15:30:23.887 BEFORE_Frame_height = 46.000000
2013-03-07 15:30:23.888 BEFORE_Bound_height = 46.000000
2013-03-07 15:30:23.888 After_Frame_height = 49.887489
2013-03-07 15:30:23.888 After_Bound_height = 46.000000
答案 0 :(得分:0)
frame
和bounds
之间存在差异,尤其是在您更改transform
时。在你的代码中你混合两者,结果不是你所期望的。
您可以通过设置transform
。
您可以使用新框架的origin
和bounds
的尺寸创建矩形。 bounds
使用transform
没有更改。
您将此rect设置为frame
。视图不会移动(相同的origin
),但会缩小,因为您正在更改外部尺寸。
您将同一个矩形设置为bounds
。我不确定如果将bounds.origin
设置为非零值会发生什么,但按钮的内容可能会被翻译。此外,它还会按下按钮,因为bounds.size
设置为与以前相同。
要明确:
bounds
= 内部坐标系中的矩形,通常为origin
零(滚动视图除外)且所需大小。frame
= superview(外部)坐标系中的矩形,任意origin
且size
可能与{{1>相同}} 即可。 bounds.size
是frame
,center
和bounds
的计算。transform
=如何transform
转化为bounds
。内部坐标到外部坐标的映射。如果您有尺寸为frame
的按钮且旋转90°,则{50, 80}
将相同 bounds.size
,{50, 80}
不会更改,但center
会反映新转换的尺寸frame
。
我希望现在很清楚。
更新:以下是显示{80, 50}
和frame
之间差异的图片。
黑色方块为bounds
,浅色方块为bounds
。在第一张图片上,它们具有相同的尺寸。在第二张图片上,视图已旋转frame
。