我想通过动态更改帧的大小来截断UIImageView的一端。当然,如果它自动调整它看起来不会被“截断”,但看起来会缩小。前者是我想要的效果,后者不是。
到目前为止,我已经在IB中设置了UIImageView,然后使用IBOutlet以编程方式将其连接起来。然后我把它放在ViewDidLoad中,但仍然得到自动调整:
[self.stringImageView setAutoresizingMask:UIViewAutoresizingNone];
self.stringImageView.frame = CGRectMake(9.0f, 508.0f, 500.0f, 26.0f);
任何想法如何剪辑我的UIImageView而不是调整大小?
编辑1
还应该注意到,在IB中,我取消了Clip Subviews
和Autoresize Subviews
。
答案 0 :(得分:11)
使用:stringImageView.contentMode = UIViewContentModeCenter;
因此,您添加到UIImageView的图像始终在视图中保持相同的大小和相同的位置。
答案 1 :(得分:1)
您需要先根据imageview的帧剪辑UIImage对象,然后将其设置为图像视图的图像。另请参阅Cropping an UIImage
答案 2 :(得分:0)
@implementation UIImage (Resize)
// Returns a copy of this image that is cropped to the given bounds.
// The bounds will be adjusted using CGRectIntegral.
// This method ignores the image's imageOrientation setting.
- (UIImage *)croppedImage:(CGRect)bounds {
CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return croppedImage;
}
答案 3 :(得分:0)
在Interface Builder中,将“视图”选项卡中的“模式”设置为“顶部”或其应该是什么。
答案 4 :(得分:0)
如果您只希望将部分图像显示为可见的另一种更有效的方法, 或者例如为其外观设置动画,
是将UIImageView
的内容模式设置为UIViewContentModeCenter
(或任何其他对齐方式)并将其包含在UIScrollView
中。
您只需要更改滚动视图的框架,即可在视觉上裁剪图像,而无需创建裁剪图像(如果用于动画目的,这将是一个非常高的价格)。