반응형

1.버튼 하나 만든다.

2. new file로 storyboard 하나 더 추가해준다.(팝업용)

3. 팝업용 storyboard에 ui view controller 하나 드래그해서 가져온다.

4. 팝업용 storyboard에 ui view 하나 만들어준다.

4. ui  view에 image view 하나 넣어준다.

5. 넣고 싶은 label 등을 넣어준다. (width, height, horizantal 등 고정이 필요함.)

 

6. image view에 들어갈 이미지들은 Assets.xcassets 폴더에 드래그 해서 넣어주면 됨

7. 드래그 해서 넣어 준 후, 마우스 우 클릭 -> iphone으로 바꿔준 후 -> 밑으로 드래그 -> 위에 칸은 지우면 됨.

8. 스토리보드 연결 해줄 viewcontroller.swift 파일을 하나 생성 해준 후, custom class 메뉴에 만들어준 swift파일 이름을 써준 후 연결

팝업

9.팝업창이 아니라, 화면 바깥쪽을 클릭해 줄 경우, 팝업창이 사라지게 하기 위해, 버튼을 하나 드래그 해서 가져온 뒤, 스크린만큼 늘려줌

클릭 해서 popup창을 띄우기 위한 storyboard

10.버튼을 클릭 후 -> control키를 누르면서 -> 클래스 밑에 내려 드래그 해줌 -> 이름 설정

 

웹뷰를 띄어줄거라 하나 만들어줌, web kit 찾으면 됨

 

webview를 이용해 인터넷을 띄어줄거라서, 인터넷을 사용하기 위한 설정
webkit울 import한 후 framewoek에 추가 해준다.
클릭 시 popup viewcontroller 가져오기
가져올 때, storyboardID를 통해서 가져올거임

//
//  ViewController.swift
//  Custom_PopUp_example
//
//

import UIKit
//인터넷을 사용할거기 때문에
import WebKit

class ViewController: UIViewController {

    //webView 끌어서 가져옴
    @IBOutlet weak var myWebview: WKWebView!
    
    //클릭 버튼 정의
    @IBOutlet weak var popUpBtn: UIButton!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    //버튼 클릭 시 실행
    @IBAction func createPopUpBtnClicked(_ sender: UIButton) {
        //팝업 버튼 클릭 시
        print("viewcontroller called")
        
        //스토리보드 가져오기
        let storyboard = UIStoryboard.init(name: "PopUp", bundle: nil)
        //스토리보드를 통해 popup view controller 가져오기
        let alertPopupVC = storyboard.instantiateViewController(withIdentifier: "AlertPopupVC") as! Alert_Popup_ViewController

        //팝업 효과 설정
        alertPopupVC.modalPresentationStyle = .overCurrentContext
        // 뷰컨트롤러가 사라짐
        alertPopupVC.modalTransitionStyle = .crossDissolve //스르르
        //메인에 알림
        alertPopupVC.subscribeBtnCompletionClosure = {
            print("컴플레션 블럭이 호출 됨")
            let myChannelUrl = URL(string:"https://fffounding.tistory.com/")
            self.myWebview.load(URLRequest(url: myChannelUrl!))
        }
        
        //다른 뷰 컨트롤러를 보여주는거
        self.present(alertPopupVC, animated: true, completion: nil)
    }
    
}
//
//  Alert_Popup_ViewController.swift
//  Custom_PopUp_example


import UIKit

class Alert_Popup_ViewController: UIViewController {
    

    //구독하러가기 버튼
    @IBOutlet weak var subscribeBtn: UIButton!
    //bg button
    @IBOutlet weak var bgBtb: UIButton!
    
    var subscribeBtnCompletionClosure: (() -> Void)? //아무행동도 안하지만, 알려주기만 한다.
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        print("Alert_Popup_ViewController 입니다")
        
        //모서리 둥글게
    
        subscribeBtn.layer.cornerRadius = 10
    }
    
    @IBAction func onBgBtnClicked(_ sender: Any) {
        print("창을 닫기 위한 배경 클릭 됨")
        //현재 창 닫기
        self.dismiss(animated: true, completion: nil)
    }
    
    
    @IBAction func subscribeClicked(_ sender: Any) {
        print("구독하러가기 버튼 클릭 됨")
        
        self.dismiss(animated: true, completion: nil)
        //컴플레션 블럭 호출
        if let subscribeBtnCompletionClosure = subscribeBtnCompletionClosure {
            //메인에 알림
            subscribeBtnCompletionClosure()
        }
    }
    
}

 

반응형

+ Recent posts