【问题标题】:Transform uibutton change height变换uibutton改变高度
【发布时间】:2013-03-07 10:38:47
【问题描述】:

变换后 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

【问题讨论】:

    标签: objective-c transform frame


    【解决方案1】:

    framebounds 之间存在差异,尤其是在您更改transform 时。在您的代码中,您将两者混合在一起,结果不是您所期望的。

    1. 您可以通过设置 transform 来应用一些旋转。

    2. 您使用新框架originbounds 的大小创建矩形。 bounds 没有使用 transform 更改。

    3. 您将此矩形设置为frame。视图不会移动(相同的origin),但会缩小,因为您正在更改外部尺寸。

    4. 您将相同的矩形设置为bounds。我不确定如果将bounds.origin 设置为非零值会发生什么,但按钮的内容可能会被翻译。它还会放大按钮,因为 bounds.size 设置为与以前相同。

    要明确:

    • bounds = 内部坐标系中的矩形,origin 通常为零(滚动视图除外)并具有所需的大小。
    • frame = superview(外部)坐标系中的矩形,任何originsize 可能与bounds.size相同。 framecenterboundstransform 的计算。
    • transform = 如何将bounds 转换为frame。内部坐标到外部坐标的映射。

    如果您有大小为{50, 80} 的按钮并且应用了90° 旋转,则bounds.size相同 {50, 80}center 也不会改变,但frame反映了新的转换大小{80, 50}

    我希望现在清楚了。


    更新:这是一张显示framebounds 之间差异的图片。

    深色方块是bounds,浅色方块是frame。在第一张图片上,它们具有相同的大小。在第二张图片上,视图已旋转 transform

    【讨论】:

    • 我已经转变为 4 度。我希望按钮的高度没有改变。我该怎么办?
    • 如果想要高度一样,不要改frame。事实上,除了transform,您不需要更改任何内容。 frame 会自动变大。用图片查看更新的答案。
    • 我想你是不是听不懂我的意思?转换后我的 UIButton 改变了它的原始高度。为什么,我不知道!
    • 您是否设置了 only transform 或者您是否也更改了 frame/bounds?你怎么知道高度改变了?通过眼睛或记录frame.size.heightbounds.size.height
    • 通过眼睛。我的按钮有一个背景图像。此按钮位于另一个按钮上。也,转化而来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多