22

UIViewContentModeScaleAspectFitinを使用するときに画像の配置を制御したいUIImageView

ここに画像の説明を入力

たとえば、上記のように 1 つのUIImageViewビューに 2 つあります。これら 2 つUIImageViewの contentMode はUIViewContentModeScaleAspectFit. ここで、画像 3 を右揃えに設定し、画像 4 を左揃えに設定して、これら 2 つの画像を一緒に表示できるようにします。

contentMode を に設定しようとしましたが、状況UIViewContentModeScaleAspect|UIViewContentModeLeftが悪化します。

任意の提案をいただければ幸いです。

4

3 に答える 3

35

最後に、それを解決できるUIImageViewAlignedプロジェクトを見つけました。

@Marchy のおかげで、迅速なバージョンの UIImageViewAlignedSwiftもあります

于 2013-09-06T02:17:51.233 に答える
7

画像ビュー内で画像を左揃えにするのではなく、プログラムで画像ビューに幅の制約を追加して、「余分なスペース」がないようにすることができます。

「 Aspect UIImageViewFit」コンテンツ モードがあり、固定の高さの制約がインターフェイス ビルダーに追加されているとします。次に、関連するビュー コントローラーで、画像の縦横比を確認し、必要な幅の制約を適用して、画像ビューを含まれている画像にスナップします。例えば:

@IBOutlet weak var imageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    // UIImage loaded from somewhere...
    imageView.image = uiImage

    // Check the UIImageView for existing height constraints
    let heightConstraints = imageView.constraints.filter{$0.firstAttribute == .height}
    if let imageViewHeight = heightConstraints.first?.constant {

        // Calculate the width which would make the image view fit
        // the image perfectly, and constrain the view to that width.
        let desiredImageViewWidth = (imageViewHeight / uiImage.size.height) * uiImage.size.width
        imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: desiredImageViewWidth))
    }
}

これを問題に適用するには、2 つUIImageViewの が隣り合うように制約し、両方に (同じ値の) 固定の高さ制約を設定してから、上記のコードを使用してプログラムで幅を設定します。

于 2016-11-06T16:30:39.617 に答える
2

一部の人々のための別のオプションは、 のコンテンツ ハギングの優先度を調整することUIImageViewです。UIImageViewInterface Builderで、優先度の低いに制約を追加します。

ここに画像の説明を入力

これにより、画像が追加されるまで制約が満たされます。次に、UIImageView のContent Hugging Priorityを幅 (または上/下に配置する場合は高さ) の高い値に設定します。

ここに画像の説明を入力

次に、UIImageView のコンテンツ モードを必要なものに設定します。お役に立てれば!

于 2018-03-15T22:22:11.903 に答える