Происхождение iOS не отображается (0, 0) - PullRequest
0 голосов
/ 01 июля 2019

Я пишу приложение для iOS, используя swift 4.2.Я хочу добавить пользовательский вид как подпредставление вида ViewController в центре.Я устанавливаю кадр моего пользовательского представления в функции viewDidAppear.В этой функции источник представления «неправильный» - (64; 0) вместо (0; 0).

Вот мой код:

private var blurEffectView: UIVisualEffectView!
private var profileInputView: ProfileInputView!

override func viewDidLoad() {
    profileInputView = ProfileInputView.init()
    profileInputView.setDelegate(profileInputViewDelegate: self)
    blurEffectView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffect.Style.prominent))
    setupViewsFinished = true
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if !setupViewsFinished { return }
    blurEffectView.frame = view.frame
    blurEffectView.center = view.center
    profileInputView.frame = blurEffectView.frame
    profileInputView.frame.size = CGSize.init(width: blurEffectView.frame.width * 0.8, height: blurEffectView.frame.height * 0.8)
    profileInputView.center = blurEffectView.center
}

func showInputView(with description: String) {
    profileInputView.configure(with: description)
    blurEffectView.contentView.addSubview(profileInputView)
    view.addSubview(blurEffectView)
}

func hideInputView(with description: String) {
    profileInputView.removeFromSuperview()
    blurEffectView.removeFromSuperview()
}

Я поставил точку отладкив viewDidAppear и напечатанное начало кадра представления:

po view.frame.origin

результат: ▿ (0.0, 64.0) - x: 0.0 - y: 64.0

Я хочу поместить свой пользовательский вид в центр, но он расположен ниже, а его нижняя часть не видна.

Что я делаю не так?

PS: результат такой же без использования UIVisualEffectView

1 Ответ

0 голосов
/ 01 июля 2019
import UIKit

class ViewController: UIViewController {

    private var blurEffectView: UIVisualEffectView!
    private var profileInputView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = #colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)

        blurEffectView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffect.Style.prominent))
        profileInputView = UIView()
        profileInputView.backgroundColor = #colorLiteral(red: 0.7450980544, green: 0.1568627506, blue: 0.07450980693, alpha: 1)

        view.addSubview(blurEffectView)
        blurEffectView.contentView.addSubview(profileInputView)
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        blurEffectView.frame = view.frame
        blurEffectView.center = view.center

        profileInputView.frame = blurEffectView.bounds
        profileInputView.bounds.size = CGSize.init(width: blurEffectView.bounds.width * 0.8, height: blurEffectView.bounds.height * 0.8)
        profileInputView.center = blurEffectView.center
    }

}

Эй, чувак.Я не уверен, что это именно то, что вы хотите.Но это по центру

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...