8

私はUIImageView50x100の画像を表示しています。

画像 50x50 の一部 (上部) だけを表示したいですか?

どうやってやるの?

4

3 に答える 3

11

を使用して画像をトリミングできますCGImageCreateWithImageInRect。これは、CGImageRef で動作する Quartz プリミティブであるため、次のようになります。

CGImageRef imageRef = CGImageCreateWithImageInRect(originalImage.CGImage, cropRect);
UIImage* outImage = [UIImage imageWithCGImage:imageRef scale:originalImage.scale orientation:originalImage.imageOrientation]]; 
CGImageRelease(imageRef);

計算するときcropRectは、ポイントではなくピクセルで指定する必要があることに注意してください。つまり、次のようになります。

float scale = originalImage.scale;
CGRect cropRect = CGRectMake(0, 0,
                         originalImage.size.width * scale, originalImage.size.height * 0.5 * scale);

ここで、0.5因子は、上半分のみが必要であるという事実を説明します。

低レベルに行きたくない場合は、画像をUIView背景色として追加し、clipToBoundsCALayer プロパティを使用してクリッピングを行うことができます。

myView.backgroundColor = [UIColor colorWithBackgroundPattern:myImage];
myView.layer.clipToBounds = YES;

また、myViewそれに応じて境界を設定します。

于 2012-12-26T16:43:54.293 に答える
8

解決策があるかもしれません。これが機能するかどうかを確認してください。Interface Builder には、イメージ コンテンツの塗りつぶしプロパティに関するオプションがあります。に設定できますtop-left。インターフェイスビルダーの画像に従ってください-

ここに画像の説明を入力

UIImageViewこの後、「clip-subviews」をチェックしてサイズを50x50に設定します...

于 2012-12-26T16:43:14.217 に答える