2012-01-15 75 views
2

我的問題如下: 我在UIImageView的頂部有一些標籤。該圖像是一個公式,表示條目。 如果我旋轉設備,UIImageView中的圖像會通過選項「方面適合」進行調整。 我怎樣才能實現UILabel也調整大小和對齊正確? 調整大小的正常選項不按需要工作。 UIImageView可縮放,最小縮放縮放和最大縮放縮放設置。在UIImageView上調整UILabel的正確位置

謝謝。

回答

1

您可以調整一個UILabel比例使用:

label.transform = CGAffineTransformMakeScale(0.5, 0.5); 

可以重新定位一個UILabel相對使用:

label.frame = CGRectOffset(label.frame, deltaX, deltaY); 

剩下的就是數學=)


所以我管理解決你的問題。完整的源代碼here

基本上我刪除了你的UIImageView,並用UIView代替它。然後,我在UIView中添加了UILabel,並從界面構建器中的UIViewUILabel中刪除了任何自動調整。這樣當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); 

} 
+0

因此,解決辦法是對設備旋轉和函數中使用兩個命令註冊? – steffenmauch 2012-01-16 15:18:07

+0

是的。但爲了做到這一點,你需要計算新的位置和大小。這是基本的幾何。一支鋼筆和一張紙是你最好的朋友。 – Dimme 2012-01-16 16:15:01

+0

我可以得到方面適合行動的規模嗎? UILabel與UIImageView處於相同的子視圖,因此它們在旋轉後被調整大小。 如果我停用自動調整大小的問題是,兩者的縮放無法按預期方式工作。除了'label.transform'和'label.frame',沒有其他可能嗎? – steffenmauch 2012-01-16 22:22:03