我的問題如下: 我在UIImageView
的頂部有一些標籤。該圖像是一個公式,表示條目。 如果我旋轉設備,UIImageView
中的圖像會通過選項「方面適合」進行調整。 我怎樣才能實現UILabel
也調整大小和對齊正確? 調整大小的正常選項不按需要工作。 UIImageView
可縮放,最小縮放縮放和最大縮放縮放設置。在UIImageView上調整UILabel的正確位置
謝謝。
我的問題如下: 我在UIImageView
的頂部有一些標籤。該圖像是一個公式,表示條目。 如果我旋轉設備,UIImageView
中的圖像會通過選項「方面適合」進行調整。 我怎樣才能實現UILabel
也調整大小和對齊正確? 調整大小的正常選項不按需要工作。 UIImageView
可縮放,最小縮放縮放和最大縮放縮放設置。在UIImageView上調整UILabel的正確位置
謝謝。
您可以調整一個UILabel
比例使用:
label.transform = CGAffineTransformMakeScale(0.5, 0.5);
可以重新定位一個UILabel
相對使用:
label.frame = CGRectOffset(label.frame, deltaX, deltaY);
剩下的就是數學=)
所以我管理解決你的問題。完整的源代碼here。
基本上我刪除了你的UIImageView
,並用UIView
代替它。然後,我在UIView
中添加了UILabel
,並從界面構建器中的UIView
和UILabel
中刪除了任何自動調整。這樣當UIView
被調整大小時,其中的任何內容也將被調整大小/重新定位。
下一步是在界面生成器中將UIView
的類更改爲UIImageView
。現在從源代碼,我可以使用imgView.image = [UIImage imageNamed:@"imagename.png"];
來設置圖像,並且我可以使用imgView.contentMode = UIViewContentModeScaleAspectFit;
來設置模式。
在旋轉的轉變現在發生的情況:
if (UIDeviceOrientationIsLandscape(deviceOrientation)){
// Play with the scale if you have any other images with different ratio.
float scale = 2.3f/3.0f;
// Transforming the UIImageView containing the UILabels which actually is a simple UIView
imgView.transform = CGAffineTransformMakeScale(scale, scale);
} else {
// Original size again
imgView.transform = CGAffineTransformMakeScale(1, 1);
}
因此,解決辦法是對設備旋轉和函數中使用兩個命令註冊? – steffenmauch 2012-01-16 15:18:07
是的。但爲了做到這一點,你需要計算新的位置和大小。這是基本的幾何。一支鋼筆和一張紙是你最好的朋友。 – Dimme 2012-01-16 16:15:01
我可以得到方面適合行動的規模嗎? UILabel與UIImageView處於相同的子視圖,因此它們在旋轉後被調整大小。 如果我停用自動調整大小的問題是,兩者的縮放無法按預期方式工作。除了'label.transform'和'label.frame',沒有其他可能嗎? – steffenmauch 2012-01-16 22:22:03