투케이2K

284. (ios/swift) alert 팝업창에 NSLayoutConstraint 적용 및 커스텀 height 높이값 설정 실시 본문

IOS

284. (ios/swift) alert 팝업창에 NSLayoutConstraint 적용 및 커스텀 height 높이값 설정 실시

투케이2K 2022. 11. 16. 10:09

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

    // [alert 팝업창 호출 메소드 정의 실시 : 이벤트 호출 시]
    // 호출 방법 : showAlert(tittle: "title", content: "content", okBtb: "확인", noBtn: "취소")
    func showAlert(tittle:String, content:String, okBtb:String, noBtn:String) {
        
        DispatchQueue.main.async {
            
            // --------------------------------
            
            // [UIAlertController 객체 정의 실시]
            let alert = UIAlertController(title: tittle, message: content, preferredStyle: UIAlertController.Style.alert)
            
            // --------------------------------
            
            // [alert 팝업창 height 높이 값 설정 실시]
            let constraintHeight = NSLayoutConstraint(
                  item: alert.view!, attribute: NSLayoutConstraint.Attribute.height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute:
                  NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 500)
            
            alert.view.addConstraint(constraintHeight)
            
            // --------------------------------
            
            // [컨텐츠 뷰 영역에 들어갈 뷰 컨트롤러를 생성]
            let contentVC = UIViewController()
            
            
            // [컨텐츠 뷰 배경 색상 지정]
            contentVC.view.backgroundColor = .blue
            
            
            // [팝업창에 컨텐츠 뷰 추가]
            alert.setValue(contentVC, forKey: "contentViewController")
            
            // --------------------------------
            
            // [인풋으로 들어온 확인 버튼이 nil 아닌 경우]
            if(okBtb != "" && okBtb.count>0){
                let okAction = UIAlertAction(title: okBtb, style: .default) { (action) in
                    
                    // [확인 버튼 클릭 이벤트 내용 정의 실시]
                    return
                }
                alert.addAction(okAction) // 버튼 클릭 이벤트 객체 연결
            }
            
            // --------------------------------
            
            // [인풋으로 들어온 취소 버튼이 nil 아닌 경우]
            if(noBtn != "" && noBtn.count>0){
                let noAction = UIAlertAction(title: noBtn, style: .default) { (action) in
                    
                    // [취소 버튼 클릭 이벤트 내용 정의 실시]
                    return
                }
                alert.addAction(noAction) // 버튼 클릭 이벤트 객체 연결
            }
            
            // --------------------------------
            
            // [alert 팝업창 활성 실시]
            self.present(alert, animated: false, completion: nil)
            
            // --------------------------------
        }
    }
 

[결과 출력]


반응형
Comments