Dynamics CRM 2015, невозможно подключиться к SDK, инструмент регистрации плагинов

Принятый ответ не работал на iOS 9. Я объединил его и некоторые другие предложения здесь вместе с кодом Apple в Руководстве по программированию расширения приложений .

Это решение отлично работает, так как оно не задерживает изменение высоты до viewDidAppear, а при повороте вы можете изменить высоту, если хотите, на основе размера экрана. Проверено это работает в iOS 8 и 9.

Несколько важных заметок: ~ По крайней мере, одному элементу в inputView необходимо использовать автоматический макет ~ Ограничение высоты не может быть активировано пока viewWillAppear ~ priority ограничения высоты необходимо понизить, чтобы избежать неудовлетворительных ограничений ~ updateViewConstraints - хорошее место для установки желаемой высоты

Советы: ~ При тестировании на симуляторе я обнаружил, что он очень шелушащийся и будет вести себя неожиданно. Если это вам поможет, перезагрузите симулятор и снова запустите. Или вы можете просто отключить клавиатуру и добавить ее снова.

Примечание: ~ Это не работает в бета-версии iOS 10. Он правильно изменит высоту, когда появится, но если вы повернете устройство, высота не изменится. Это связано с тем, что updateViewConstraints не запускается при вращении. Пожалуйста, напишите отчет об ошибке в отношении iOS 10. Чтобы решить эту проблему, вы можете инициировать изменение constant в viewDidLayoutSubviews.

var nextKeyboardButton: UIButton!
var heightConstraint: NSLayoutConstraint?


override func viewDidLoad() {
    super.viewDidLoad()

    self.nextKeyboardButton = UIButton(type: .System)

    self.nextKeyboardButton.setTitle(NSLocalizedString("Next Keyboard", comment: "Title for 'Next Keyboard' button"), forState: .Normal)
    self.nextKeyboardButton.sizeToFit()
    self.nextKeyboardButton.translatesAutoresizingMaskIntoConstraints = false

    self.nextKeyboardButton.addTarget(self, action: "advanceToNextInputMode", forControlEvents: .TouchUpInside)

    self.view.addSubview(self.nextKeyboardButton)

    let nextKeyboardButtonLeftSideConstraint = NSLayoutConstraint(item: self.nextKeyboardButton, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1, constant: 0)
    let nextKeyboardButtonBottomConstraint = NSLayoutConstraint(item: self.nextKeyboardButton, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: 0)
    NSLayoutConstraint.activateConstraints([nextKeyboardButtonLeftSideConstraint, nextKeyboardButtonBottomConstraint])
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.heightConstraint = NSLayoutConstraint(item:self.inputView!, attribute:.Height, relatedBy:.Equal, toItem:nil, attribute:.NotAnAttribute, multiplier:0, constant:0)
    self.heightConstraint!.priority = 999
    self.heightConstraint!.active = true
}

override func updateViewConstraints() {
    super.updateViewConstraints()

    guard self.heightConstraint != nil && self.view.frame.size.width != 0 && self.view.frame.size.height != 0 else { return }

    let portraitHeight: CGFloat = 400
    let landscapeHeight: CGFloat = 200
    let screenSize = UIScreen.mainScreen().bounds.size

    let newHeight = screenSize.width > screenSize.height ? landscapeHeight : portraitHeight

    if (self.heightConstraint!.constant != newHeight) {
        self.heightConstraint!.constant = newHeight
    }
}

0
задан Mouhie 25 February 2015 в 13:42
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: