为啥我不能设置 UIImageVies 的边界矩形宽度?

Posted

技术标签:

【中文标题】为啥我不能设置 UIImageVies 的边界矩形宽度?【英文标题】: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。但不幸的是,图像并没有像预期的那样分层。只是什么都没有发生。在这段代码下面的两行,我移动了图像。这行得通。

【问题讨论】:

【参考方案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;

试试看..

【讨论】:

是的,这行得通。但我不想改变框架。我想改变界限。 那我想我不知道有什么区别。 有很大的不同。见developer.apple.com/documentation/Cocoa/Conceptual/…

以上是关于为啥我不能设置 UIImageVies 的边界矩形宽度?的主要内容,如果未能解决你的问题,请参考以下文章

用opengl画一个矩形,要求矩形边界是黑色,内部是红色。

设置视图的边界会改变框架的坐标,为啥?

UIView 的边界矩形可以大于框架矩形是不是有意义?

C ++ Opencv重新缩放边界矩形

从旋转的矩形计算边界框坐标

为啥鼠标不能超过电脑屏幕的左,上边界,而能够超过