Failed to bind EAGLDrawable: <CAEAGLLayer: 0x6000033a66d0> to GL_RENDERBUFFER 1, Failed to make complete framebuffer object 8cd6 에러

문제 상황 : Naver Map API를 이용하여 화면 구성중, 지도가 화면에 보일 시 해당 오류가 발생. 그러나 실행 됨.

 

원인: 네이버 지도를 초기화 할 때, frame을 넣어서 생성한게 아닌, 단순 초기화 한 후, layout을 잡아서 발생.

class RunningMap: UIView {
    
    lazy var nmap: NMFMapView = {
       let nmap = NMFMapView()
        nmap.translatesAutoresizingMaskIntoConstraints = false
        return nmap
    }()

    override init(frame: CGRect) {
        super.init(frame: frame)
        addSubview(nmap)
        setNmap()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func setNmap() {
        NSLayoutConstraint.activate([
            nmap.topAnchor.constraint(equalTo: topAnchor),
            nmap.leadingAnchor.constraint(equalTo: leadingAnchor),
            nmap.trailingAnchor.constraint(equalTo: trailingAnchor),
            nmap.bottomAnchor.constraint(equalTo: bottomAnchor)
        ])
    }
    
}
class MeasureRunningViewController: UIViewController {
    
    lazy var mapView: RunningMap = {
        let mapView = RunningMap()
        mapView.translatesAutoresizingMaskIntoConstraints = false
        
        return mapView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(mapView)
        view.backgroundColor = .systemBackground
        NSLayoutConstraint.activate([
            mapView.topAnchor.constraint(equalTo: view.topAnchor),
            mapView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            mapView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            mapView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])
    }
}

해결 방안: 생성 할 때 해당 지도가 들어갈 화면에 직접적으로 frame을 삽입하여 초기화