あなたはUILabel
は比例使用してサイズを変更することができます)=
label.frame = CGRectOffset(label.frame, deltaX, deltaY);
残りは数学である
は、だから私は、管理対象あなたの問題を解決する。完全なソースコードhere。
基本的にはUIImageView
を削除し、UIView
に置き換えました。次に、UIView
にUILabel
を追加し、インターフェイスビルダーのUIView
とUILabel
sから自動サイズ設定を削除しました。そのようにして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);
}
だから、解決策は、デバイスの回転のために登録し、その関数内で、あなたの2つのコマンドを使用するのでしょうか? – steffenmauch
はい。しかし、それを行うには、新しい位置とサイズを計算する必要があります。それは基本的なジオメトリです。ペンと紙があなたの親友です。 – Dimme
アスペクトフィッティングアクションのスケールを取得できますか? 'UILabel'は' UIImageView'と同じサブビューにあり、回転後にサイズが変更されました。 自動サイズ変更を無効にした場合、両方のズームが期待通りに機能しないという問題があります。 'label.transform'や' label.frame'以外の可能性はありますか? – steffenmauch