最近遇到這樣的需求:從伺服器獲取到一張**,只需要顯示他的左半部分,或者中間部分等等。也就是擷取uiimage指定大小區域。
我的解決方案是對uiimage
進行擴充套件。通過cgimageref
和cgimage
完成擷取,呼叫的方法是:cgimagecreatewithimageinrect
。擴充套件類叫uiimage+crop
,具體**如下:
#import typedef ns_enum(nsinteger, xycropimagestyle);
@inte***ce uiimage (crop)
- (uiimage *)imagebycroppingwithstyle:(xycropimagestyle)style;
@end
#import "uiimage+crop.h"
@implementation uiimage (crop)
- (uiimage *)imagebycroppingwithstyle:(xycropimagestyle)style
cgimageref imageref = self.cgimage;
cgimageref imagepartref = cgimagecreatewithimageinrect(imageref, rect);
uiimage *cropimage = [uiimage imagewithcgimage:imagepartref];
cgimagerelease(imagepartref);
return cropimage;
}
簡單測試一下,看看有沒有實現我們想要的效果。首先,先載入乙個完整的uiimageview。這個應該不難。**如下:
uiimageview *imgview = [[uiimageview alloc] init];
imgview.frame = cgrectmake((screen.width - 226) / 2, 100, 226, 106);
uiimage *image = [uiimage imagenamed:@"ganggang"];
imgview.image = image;
[self.view addsubview:imgview];
要對uiimage進行裁剪,首先匯入標頭檔案:
#import "uiimage+crop.h"
在上面uiimage *image = [uiimage imagenamed:@"ganggang"];
這段**之後加上下面這句:
image = [image imagebycroppingwithstyle:xycropimagestyleleft];
xycropimagestyleleft
是擷取**的左半部分。
擷取成功,還可以擷取其他區域的,只需要傳入不同的xycropimagestyle
即可實現。
修改UIImage的大小
修改uislider的最大值和最小值的時候,發現需要修改的大小,否則會導致uislider變形。目前蘋果還不支援直接修改uiimage類的大小,只能修改uiimageview的大小。import inte ce uiimage scale uiimage transformtosize cgsize...
ios擷取螢幕指定位置指定大小的實現
這兩天開發中需要擷取螢幕中指定位置的,蒐羅了下沒發現多少資料,大部分都是擷取全屏的功能實現。void loadview 上面 是在image的基礎上面截圖,所以決定先擷取全屏獲取全屏,再在全屏截圖的基礎上進行部分截圖。附上全屏截圖示例 uigraphicsbeginimagecontext self...
ios修改UIImage的大小
修改uislider的最大值和最小值的時候,發現需要修改的大小,否則會導致uislider變形。目前蘋果還不支援直接修改uiimage類的大小,只能修改uiimageview的大小。所以只能通過寫方法的方式來實現修改。如下 import inte ce uiimage scale uiimage t...