MPVolumeView изменить размер значка Airplay - PullRequest
6 голосов
/ 08 февраля 2011

У меня MPVolumeView на одном из моих видов, который появляется с иконкой Airplay, когда есть другие доступные источники вывода.Это все нормально, но иконка крошечная, независимо от того, насколько большой я установил рамку для MPVolumeView, она не становится больше.

Кто-нибудь знает, как увеличить размер иконки трансляции?

Ответы [ 3 ]

18 голосов
/ 13 января 2012

Я сделал это, чтобы просто показать иконку и увеличить ее размер:

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%
0 голосов
/ 08 ноября 2018

Сканируя подпредставления и используя ограничения, мне удается воспроизвести поведение AVRoutePickerView, который изменяет размер значка в соответствии с содержащим его видом.

Хотя необходимо использовать пользовательский значок через setRouteButtonImage (второе изображение),Если нет, то он использует 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
            }
        }
    }
}

Using system icon Using custom icon

0 голосов
/ 27 августа 2011

По крайней мере, на данный момент все, что вы можете сделать, это просканировать подпредставления и вручную установить размер. Это, вероятно, не очень хорошая идея, так как иерархия подпредставлений может измениться, и даже если вы установите большую рамку для значка, она не станет больше (или если для contentMode установлено растяжение, вы получите размытый значок)

Возможно, вы даже сможете вручную заменить значок на более крупный, который вы предоставите в своем приложении, но позвольте мне повторить это, это не очень хорошая идея.

...