我在應用程序中出現了完全相同的問題。
我意識到的事情是,你不能做一個屏幕捕獲做到這一點。反過來,這意味着將標籤和文本拖到圖像上不能真正完成(它可以與我一起)與UILabels等...
你需要做的是跟蹤所有的事情在數據明智。
目前,你有你的UIImageView
的frame
。這實際上是無關緊要的。它純粹是向用戶展示正在發生的事情。
這是UILabel
相同。它也有一個frame
。再次,這與最終圖像無關。
你需要做的是它背後的數據存儲在不是絕對意義上,然後將這些值轉換爲幀的顯示設備上。
所以,如果你有一個圖像是3200x4800
像素(只是讓我很容易),這會顯示在設備上,並「收縮」到320x480
。現在,用戶將具有文字「Hello,world」的框架10, 10, 100, 21
放置在特定字體大小的標籤上。
存儲幀10, 10, 100, 21
是無用的,因爲您輸出圖像時需要的是... 100, 100, 1000, 210
(即大小的十倍)。
因此,在後臺像真的,你應該存儲信息......
frame = 0.031, 0.021, 0.312, 0.044
// these are all percentages
現在,你在哪裏標籤應該是百分比值,它應該有多大根據的大小圖片。
因此,對於縮小的圖像尺寸,它將返回10, 10, 100, 21
,對於整個圖像尺寸,它將是100, 100, 1000, 210
,因此打印輸出時尺寸看起來相同。
您可以創建一個化合物UIView
通過具有UIImageView和UILabel的UIView,然後您只需在呈現它之前調整它到全圖像大小。這將是最初接觸它的簡單但天真的方式。
或者你可以創建一個帶有顯示圖像和文字CALayers支持它一個UIView。
或者您可以使用某種繪製方法渲染圖像和文本。
無論哪種方式,你不能只使用屏幕截圖。
是的,這比首次出現時要複雜得多。
非常感謝您記錄良好的答案。首先,我會嘗試第一種方法,即在屏幕上具有真實圖像尺寸的視圖。我希望字體大小在算術級數中,否則將它與縮小比例相乘是行不通的。如果我被卡住了,我會回來補充一些問題。 – Meeshoo 2014-11-06 11:55:41
@Meeshoo無後顧之憂。使用字體大小,我必須創建一個增加字體大小的循環,並計算邊界矩形(NSString函數),直到它變得太大,然後使用以前的大小。 – Fogmeister 2014-11-06 11:56:41
包含真實尺寸圖像的視圖也可以使用UIGraphicsGetImageFromCurrentImageContext呈現? – Meeshoo 2014-11-06 12:06:16