我很努力在繪製到屏幕外緩衝區時讓Image Inset工作。在UIGraphicsBeginImageContextWithOptions中的CGContextDrawImage上忽略UIEdgeInsets
使用resizableImageWithCapInsets:上的UIImage直接setImage:成一個按鈕用於我正常工作:
UIImage * base = [UIImage imageNamed:@"button.png"];
UIImage * img = [base resizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)];
[self setImage:img forState:UIControlStateNormal];
如下圖所示(左是原始縮放,右被縮放與插圖):
所以,正確的一個很好 - 線的頂部/底部/左/右等距。到現在爲止還挺好。
現在,如果我嘗試用圖像同樣的事情被吸入,然後捕捉到屏幕外緩衝區:
UIImage * base = [UIImage imageNamed:@"button.png"];
base = [base resizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)];
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
ctx = UIGraphicsGetCurrentContext();
CGContextDrawImage(ctx, CGRectMake(0,0,self.bounds.size.width,
self.bounds.size.height), [base CGImage]);
img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self setImage:img forState:UIControlStateNormal];
我得到以下(再剩下的就是原料比例,右邊是用插圖) :
。
所以這裏似乎忽略了插入。
任何有關這裏發生了什麼問題的建議?在http://people.apache.org/~dirkx/insetSample.zip的全功能示例,以及http://pastebin.com/rm8h6YFV的關鍵代碼。
任何和所有建議表示讚賞。
了Dw
我只是想編輯您所提供的項目,使這一變化解決您的問題。 –
謝謝 - 這的確是現貨。作品可愛的變化(爲將來的參考 - http://pastebin.com/FjZkfb9z是更新的文件/代碼。 –
其實 - 當這樣做與真實圖像(這是一種像視覺混合器上看到illumated按鈕http://www.flickr.com/photos/peterprice/121342192/) - 需要確保東西都旋轉 - 因爲兩個圖層的頂部和底部都有Y原點。 –