2012-01-15 6 views
2

私の問題は次のとおりです: 私はUIImageViewの上にいくつかのラベルを持っています。イメージは公式で、UILabelはエントリを表します。 デバイスを回転させると、UIImageView内のイメージはオプション「アスペクトフィッティング」でサイズが変更されます。 UILabelのサイズが変更され、正しく整列されるようにするにはどうすればよいですか? サイズ変更の通常のオプションは、必要に応じて機能しません。 UIImageViewは、zoomableであり、minimumZoomScaleとmaximumZoomScaleが設定されています。UIImageView上で正しいUILabelをサイズ変更してください

ありがとうございました。

label.transform = CGAffineTransformMakeScale(0.5, 0.5); 

あなたはUILabel比較的使用して再配置することができます:

答えて

1

あなたはUILabelは比例使用してサイズを変更することができます)=

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

残りは数学である


は、だから私は、管理対象あなたの問題を解決する。完全なソースコードhere

基本的にはUIImageViewを削除し、UIViewに置き換えました。次に、UIViewUILabelを追加し、インターフェイスビルダーのUIViewUILabelsから自動サイズ設定を削除しました。そのようにして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

だから、解決策は、デバイスの回転のために登録し、その関数内で、あなたの2つのコマンドを使用するのでしょうか? – steffenmauch

+0

はい。しかし、それを行うには、新しい位置とサイズを計算する必要があります。それは基本的なジオメトリです。ペンと紙があなたの親友です。 – Dimme

+0

アスペクトフィッティングアクションのスケールを取得できますか? 'UILabel'は' UIImageView'と同じサブビューにあり、回転後にサイズが変更されました。 自動サイズ変更を無効にした場合、両方のズームが期待通りに機能しないという問題があります。 'label.transform'や' label.frame'以外の可能性はありますか? – steffenmauch

関連する問題