【问题标题】:Why can't I set the bounds rectangle width of an UIImageVies?为什么我不能设置 UIImageVies 的边界矩形宽度?
【发布时间】:2009-04-22 13:50:30
【问题描述】:

当我尝试这个时

myUIImageView.bounds.size.width = 50.0f;

然后我得到一个错误:分配中的左值无效

但是当我这样做时,它会编译。虽然这是很多额外的工作

CGRect newRect = myUIImageView.bounds;
newRect.size.width = 50.0f;
myUIImageView.bounds = newRect;

虽然可以编译,但什么都不会发生。我的 UIImageView 的框架是 300 宽,并填充了正好 300 像素宽度的图像。它非常适合。所以现在我想拉伸那个图像(只是为了好玩),所以我必须使边界矩形的宽度更小。让我们说50.0。但不幸的是,图像并没有像预期的那样分层。只是什么都没有发生。在这段代码下面的两行,我移动了图像。这行得通。

【问题讨论】:

    标签: iphone quartz-graphics


    【解决方案1】:

    -[UIView bounds] 返回一个新的CGRect,其中包含视图边界的 x、y、宽度和高度值。更改这个新的 CGRect 上的值不会产生任何效果,GCC 意识到了这一点。

    为了更改宽度,您必须从视图中获取边界,将它们存储在某处,更改存储的 CGRect 上的宽度值并使用 -[UIView setBounds:] 通知视图其新边界

    【讨论】:

    • 谢谢!我试过了,但这对我的 UIImageView 也没有影响。我必须设置一些特殊的内容模式才能拉伸或震动我的图像吗?
    • UIImageView 根本不操纵图像,它只是在边界内按原样绘制它。要缩放视图,只需调用 [view setTransform:CGAffineTransformMakeScale(0.5f, 1.0f)];
    【解决方案2】:

    属性 size 和 orign 是只读的。

    bounds 不是只读的。

    这就是为什么你可以改变边界,但不能改变大小

    【讨论】:

    • 谢谢。错误信息“invalid lvalue in assignment”中的“Ivalue”是什么意思?
    • lvalue 是 'left-value' 表达式,可以停留在 '=' 的左边
    【解决方案3】:

    这很有效(对我来说);

    CGRect frame = myUIImageView.frame;
    frame.size.width = 50.0;
    myUIImageView.frame = frame;
    

    试试看..

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    相关资源
    最近更新 更多