0

UIImageViewcontentMode = UIViewContentModeScaleAspectFit

画像を正しく表示するには、このモードが必要です。ただし、のようにフレームが変更された場合は、imageViewのトリミング画像も必要です UIViewContentModeTopLeft

どうすればこれを入手できますか?

編集:

imageView.contentMode = UIViewContentModeTopLeft;
imageView.image = someImage;

今、私はこれを手に入れました(そしてそれは大丈夫です、画像は適切にスケーリングされ、見栄えがします):

ここに画像の説明を入力してください

次に、私は方法があります:

- (void)setRating:(double)rating {
      double starWidth = imageView.image.size.width / _maxRating;
      CGRect oldFrame = self.frame;
      imageView.frame = CGRectMake(0, 0, rating * starWidth, oldFrame.size.height);
      _rating = rating;
}

このメソッドの後、私はそのようなものを取得する必要があります:

ここに画像の説明を入力してください

しかし、UIViewContentModeScaleAspectFit私は拡大縮小された画像を取得するため

4

1 に答える 1

1

多くの追加作業なしでは、試行しているメソッドでそのimageViewから必要なものを実際に取得することはできません。ビューのサイズを変更すると、そのスケーリングが表示されます。これが設定したモードであり、実際に行われるのはそれだけです。いくつかの可能性があり、その多くはサブクラス化を通じて自分でサイズを変更することを含みます。しかし、解決策については:

  1. 実行前にアートのサイズを設定してください。そうすれば、すべてのユーザーとすべての実行で、これらの星のすべての表示に対してスケーリングを行う必要がなくなります。電子を救え!
  2. imageViewを、imageViewのスケーリングされたサイズに一致する他のコンテナビューにサブビューとして追加し、サイズを変更して、表示したくないimageView部分をクリップします。
于 2013-03-13T14:07:33.017 に答える