我從xib創建一個UIView,最終呈現爲UIImage。大小一個從xib創建的UIView?
UIView本身具有內部約束,在給定IB中足夠大的幀大小的情況下它可以正常工作。不過,我需要將寬度設置爲某些特定的內容,並且我無法弄清楚如何在從xib加載UIView後設置寬度。
[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil][0];
渲染視圖,我這樣做:
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
不管我怎麼設定的界限來,但是,UIView的是尺寸爲IB的初始大小相同。我如何設置UIView的大小,以便它會導致內部約束來調整大小並正確呈現?
如果您使用自動佈局,你可能需要添加一個約束來指定新的寬度(和刪除現有的寬度約束如果有的話)。如果使用佈局約束,直接設置框架並不總是可行。 – Greg 2014-10-07 13:02:15
我嘗試以編程方式設置寬度約束,並且也不成功。 – 2014-10-07 13:09:10
在更改幀到下一個運行循環後,有可能'UIView'延遲它的內部更新嗎?之前我遇到過這個問題,並且將後續的渲染代碼包裝在主線程的'dispatch_async'中通常會修復它(但是之後,以編程方式設置寬度約束條件也總是對我有用,所以你可能會有其他的東西導致問題)。 – Greg 2014-10-07 13:14:39