6

ビューの 1 つに MPVolumeView があり、他の出力ソースが利用可能な場合に Airplay アイコンが表示されます。それはすべて問題ありませんが、アイコンは小さく、MPVolumeView のフレームをどれだけ大きく設定しても、それ以上大きくなりません。

エアプレイアイコンのサイズを大きくする方法を知っている人はいますか?

4

3 に答える 3

18

アイコンを表示してサイズを大きくするためにこれを行いました:

MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:CGRectMake(255, 12, 30, 25)] autorelease];
volumeView.showsVolumeSlider = NO;
volumeView.showsRouteButton = YES;
volumeView.transform = CGAffineTransformMakeScale(1.5, 1.5); // increase size by 50%
于 2012-01-13T14:07:43.270 に答える
0

少なくとも現時点では、サブビューをクロールして手動でサイズを設定することしかできません。サブビュー階層が変更される可能性があり、アイコンに大きなフレームを設定しても大きくならないため、おそらく良い考えではありません (または、contentMode がストレッチに設定されている場合、ぼやけたアイコンが表示されます)。

アイコンをアプリで提供する大きなアイコンに手動で置き換えることもできるかもしれませんが、もう一度言いますが、それは良い考えではありません。

于 2011-08-27T14:30:49.163 に答える
0

サブビューをクロールし、制約を使用して、AVRoutePickerView の動作を複製することに成功しました。AVRoutePickerView は、含まれているビューに従ってアイコン イメージのサイズを変更します。

setRouteButtonImage(second image) を介してカスタム アイコンを使用する必要がありますが。そうでない場合は、サイズ変更されたイオンを表示しない 2 つの ImageView を使用します (最初の画像)。

次に添付されたコードとビューの階層:

class ViewController: UIViewController {

    @IBOutlet weak var airplayView: MPVolumeView!

    override func viewDidLoad() {
        super.viewDidLoad()
        airplayView.showsRouteButton = true
        airplayView.showsVolumeSlider = false
        airplayView.setRouteButtonImage(UIImage(named: "airplay"), for: .normal)
        for view in airplayView.subviews {
            if let button = view as? UIButton {
                button.imageView?.contentMode = .scaleAspectFit
                button.translatesAutoresizingMaskIntoConstraints = false
                NSLayoutConstraint(item: button,
                                   attribute: NSLayoutConstraint.Attribute.bottom,
                                   relatedBy: NSLayoutConstraint.Relation.equal,
                                   toItem: airplayView,
                                   attribute: NSLayoutConstraint.Attribute.bottom,
                                   multiplier: 1,
                                   constant: 0).isActive = true
                NSLayoutConstraint(item: button,
                                   attribute: NSLayoutConstraint.Attribute.trailing,
                                   relatedBy: NSLayoutConstraint.Relation.equal,
                                   toItem: airplayView,
                                   attribute: NSLayoutConstraint.Attribute.trailing,
                                   multiplier: 1,
                                   constant: 0).isActive = true
                NSLayoutConstraint(item: button,
                                   attribute: NSLayoutConstraint.Attribute.top,
                                   relatedBy: NSLayoutConstraint.Relation.equal,
                                   toItem: airplayView,
                                   attribute: NSLayoutConstraint.Attribute.top,
                                   multiplier: 1,
                                   constant: 0).isActive = true
                NSLayoutConstraint(item: button,
                                   attribute: NSLayoutConstraint.Attribute.leading,
                                   relatedBy: NSLayoutConstraint.Relation.equal,
                                   toItem: airplayView,
                                   attribute: NSLayoutConstraint.Attribute.leading,
                                   multiplier: 1,
                                   constant: 0).isActive = true
            }
        }
    }
}

システム アイコンの使用 カスタム アイコンの使用

于 2018-11-07T23:42:20.840 に答える