以编程方式阻止UIImageView自动调整大小

时间:2011-10-17 10:50:53

标签: iphone objective-c xcode cocoa-touch uiimageview

我想通过动态更改帧的大小来截断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 SubviewsAutoresize Subviews

5 个答案:

答案 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中。

您只需要更改滚动视图的框架,即可在视觉上裁剪图像,而无需创建裁剪图像(如果用于动画目的,这将是一个非常高的价格)。