我有一個UIImageView
作爲subview
的UIView
(幀大小300 x 300)。我的UIImage
可能是肖像,風景或一些奇怪的尺寸。如何在UIView
框架尺寸內填寫UIImage
而不將圖片延伸至300 x 300?UIImageView填寫UIView
這樣做的目的,我將添加另一個UIImageView
作爲圖像邊框。 請幫忙。
謝謝。
我有一個UIImageView
作爲subview
的UIView
(幀大小300 x 300)。我的UIImage
可能是肖像,風景或一些奇怪的尺寸。如何在UIView
框架尺寸內填寫UIImage
而不將圖片延伸至300 x 300?UIImageView填寫UIView
這樣做的目的,我將添加另一個UIImageView
作爲圖像邊框。 請幫忙。
謝謝。
[img setContentMode:UIViewContentModeScaleAspectFit];
UIViewContentModeScaleAspectFit:由 縮放以適合視圖的大小的內容保持縱橫比。視圖邊界的任何剩餘區域都是透明的。
或[img setContentMode:UIViewContentModeScaleAspectFill];
UIViewContentModeScaleAspectFill:縮放內容來填充視圖的大小。部分內容可能會被剪輯以填充視圖的邊界。
如果你裁剪子視圖,那麼您需要根據您想要把它放在上海華做
[imgView clipToBounds:YES];
使用UIImageView的contentMode屬性。
編輯:和設定的圖像尺寸,以300×。
[image setContentMode:UIViewContentModeScaleToFill];
設置的UIImageView
的contentMode屬性要麼這個值:
UIViewContentModeCenter,
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
由於這個值:
UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
確實會使圖像成爲300 x 300,這是您不想要的。
有沒有辦法將它們合併?我想要的是:假設100x10的圖像和全屏UIImageView。我希望它擴展到水平尺寸等於UIImageView寬度(對於iPhone來說爲320),並且生成的圖像(現在爲320x32)位於頂部。我試過這imgview.contentMode = UIViewContentModeScaleAspectFit | UIViewContentModeTop;但它不起作用。它只是UIViewContentModeTop部分(頂部是100x10)。 – Gik 2012-11-09 13:47:55
@Gik - 你有沒有辦法做到這一點。我現在正在遇到一模一樣的問題。 – 2015-07-22 09:55:03
我使用了一招。我「創建」了另一幅圖像(來自原始圖像),拉伸以填充較小的尺寸,然後用我「失蹤」的像素填充。所以最後我從原始的300x300圖像。如果你想我可以發佈代碼。 – Gik 2015-08-31 10:48:11
啊我只是重新讀你在問什麼,我知道你現在的問題是什麼。
您的UIImageView
的框架會發生變化,並且您的圖像會發生變化。你不希望你的形象改變,但你想你的ImageView
調整來填補它被包含在視圖中。
UPDATE
我想通了。
[self.imageView setContentMode:UIViewContentModeCenter];
無論什麼方向,大小都保持不變。
您還可以將其設置爲對齊頂部,底部,左側,右側,左上角,右上角,左下角,右下角,所有這些僅幫助對齊圖像並且不重繪或重新調整大小圖片。
這有幫助嗎?
如果我重繪,它會拉伸我的形象。有沒有選擇不舒展? – RockBaby 2012-03-01 19:00:45
我試圖使用上述2種模式,我的圖像不適合300 x 300 – RockBaby 2012-03-01 18:34:27
ivEditImage = [[UIImageView alloc] initWithImage:imgChoosen]; ivEditImage.frame = vwEditingImage.frame; [ivEditImage setContentMode:UIViewContentModeScaleAspectFill]; – RockBaby 2012-03-01 18:38:53
即使'UIViewContentModeScaleAspectFit'也沒有做到這一點? – 2012-03-01 20:14:41