手動で再現するための最良の方法は何ですか
contentMode = UIViewContentModeScaleAspectFit;
それを使わずに?
アスペクト比に合わせてUIImageView(スクロールビュー内)を拡大縮小する必要があります。画像の上にオーバーレイを描画するには、画像の新しいサイズを知る必要があります。
手動で再現するための最良の方法は何ですか
contentMode = UIViewContentModeScaleAspectFit;
それを使わずに?
アスペクト比に合わせてUIImageView(スクロールビュー内)を拡大縮小する必要があります。画像の上にオーバーレイを描画するには、画像の新しいサイズを知る必要があります。
最近、ImageView 内の画像のフレームを見つけて、その画像にタッチ可能なビューを追加する必要がありました。これが私が行った方法です。
-(void)calculateScaleAndContainerFrame{
if(!imageView || !image) return;
CGSize imageSize = image.size;
CGSize imageViewSize = imageView.frame.size;
float imageRatio = imageSize.width / imageSize.height;
float viewRatio = imageViewSize.width / imageViewSize.height;
if(imageRatio > viewRatio){
scale = imageSize.width / imageViewSize.width;
}else{
scale = imageSize.height / imageViewSize.height;
}
CGRect frame = CGRectZero;
frame.size = CGSizeMake(roundf(imageSize.width / scale), roundf(imageSize.height / scale));
frame.origin = CGPointMake((imageViewSize.width - frame.size.width) / 2.0, (imageViewSize.height - frame.size.height) / 2.0);
[container setFrame:frame];
}
imageViewSize をスクロールビュー (または画像を配置するビュー) のコンテンツサイズに置き換えて、ガイドとして使用できると確信しています。
注 1: 私の場合、ビューを垂直方向に中央に配置する必要がありました。そうでない場合は、フレームの原点を設定した行で y を 0 に設定するだけです。画像を水平方向に中央揃えにしたくない場合は、x についても同じです。
注 2: これは決して、プロジェクトにプラグインして作業できるコードではありません。おそらくそれを読んで理解し、そのメソッドを自分のプロジェクトに適用する必要があります。今はあなたのニーズに合わせて修正する時間がありません。
注 3: そのコードを使用して、そのコンテンツ モードを使用する画像ビュー内の画像を完全に表示することができたので、機能します。