2017-12-30 46 views
0

popover 뷰 컨트롤러 내에서 아래에 단추가있는로드 막대를 표시하려고합니다. 나는 UIProgressView를 자체적으로 잘 보여줄 수있다. 나는 UIProgressView와 UIButton을 스택 뷰에 넣고 popover의 중심에 제시하고있다.Popover 모달의 가운데 스택보기

아래 코드와 결과보기를 게시했습니다. 스택보기에는 버튼이 있지만 디버거에 따라 x : -25 y : 0에 있습니다. 스택 뷰 센터 좌표를 self.view.center 좌표로 설정하려고 시도했지만 작동하지 않았습니다. 내가 올바르게 설정하지 않은 것이 있습니까?

// Collection View #1 
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let tv = VideoLibrary() // <- Collection View class 
    tv.videoSelectionDelegate = self 
    tv.modalPresentationStyle = .popover 
    tv.popoverPresentationController?.sourceView = self.view 
    present(tv, animated: true, completion: nil) 
} 

// VideoLibrary()/Collection View #2 
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let loadingView = LoadingVideoView() // <- view with stack view 
    loadingView.view.frame = self.view.frame 
    loadingView.modalPresentationStyle = .overCurrentContext 
    present(loadingView, animated: true, completion: nil) 
} 


// LoadingVideoView() 
var progressView: UIProgressView = { 
    let progress = UIProgressView(progressViewStyle: .default) 
    progress.progress = 0.5 
    return progress 
}() 
var blurView: UIVisualEffectView = { 
    let effect = UIBlurEffect(style: .extraLight) 
    let blur = UIVisualEffectView(effect: effect) 
    return blur 
}() 
var stack: UIStackView = { 
    let stack = UIStackView(frame: .zero) 
    stack.distribution = .equalSpacing 
    stack.axis = .vertical 
    stack.alignment = .center 
    stack.spacing = 20 
    return stack 
}() 
var cancelButton: UIButton = { 
    let button = UIButton(type: .roundedRect) 
    button.setTitle("Cancel", for: .normal) 
    button.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside) 
    return button 
}() 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func viewWillAppear(_ animated: Bool) { 

    self.view.insertSubview(blurView, at: 0) 
    stack.addArrangedSubview(progressView) 
    stack.addArrangedSubview(cancelButton) 

    stack.translatesAutoresizingMaskIntoConstraints = false 
    cancelButton.translatesAutoresizingMaskIntoConstraints = false 
    progressView.translatesAutoresizingMaskIntoConstraints = false 

    stack.center = self.view.center 

    self.view.addSubview(stack) 
} 

enter image description here

답변

0

업무용 주위 viewDidAppear(...) 함수 호출에 stack.center = self.view.center을 설정하는 것입니다. viewWillAppear(...) 함수의 끝에서 중심 값은 (디버거에 따라) 동일하지만 viewDidAppear(...)이 호출되면 값이 변경됩니다. 나는이 두 사람 사이에 어떤 다른 사람이 부름 받았는지는 모르지만 지금은이 일을한다.