为啥我不能设置 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 的边界矩形宽度?的主要内容,如果未能解决你的问题,请参考以下文章