lazy var hStackView : UIStackView = {

        let ret = UIStackView()

        ret.axis = .horizontal

        ret.distribution = .equalSpacing

        ret.alignment = .center

        ret.spacing = 1

        return ret

}()

 TroubleShooting

스택뷰 버그 때문에 검색 하셨을 것 같다.

스크롤뷰 안에 스크롤뷰를 넣었을 때는 dummy UIView()를 생성하여 해당 뷰에 붙인 뒤 스크롤 뷰에 넣으니 버그가 나오지 않았다.

사용자 제스쳐(핀치 줌 인/아웃, 스크롤 등) 에 문제가 있어서 취한 조치였다.

스택뷰 아에 스택뷰를 넣고 또 그 안에 스택뷰를 넣은 후 그 안에서 아무리 그림을 그리더라도 UIView에 그리고 붙이면 아무런 문제가 나오지 않을거라 생각했다.


스택 뷰 안에 스택 뷰는 문제가 된다.

그래프가 같이 들어가는 경우 문제가 되더라. 화면에 나오지 않았다. add arrage는 안나오고 addsubview 는 잘 나오는 현상...

관련해서 인터넷 서핑도 많이 해봤지만 우선, 코드로만 여러번 중첩해서 쓰는 경우는 많지 않아서 아직은 안 쓰는게 낫다고 생각했다.


잘 되는 곳에서는 쓰고 아닌 곳에서는 안쓴다.


대안은?

빌더 패턴으로 UIView를 생성할 때 해당 view 내에서 y값만 증가시켜서 패널을 붙이는 빌더 패턴을 만들면 된다.


코드는?

   func createPanels(s : jhScene, withHeightRatios: ratioNtype...) {

        

        var panel : jhPanel<jhScene>? = nil

        var y : CGFloat = 0.0

        var vHeight : CGFloat = 0.0

        

        "".pwd(self)

        

        for rnt in withHeightRatios {


      if(GS.s.logLevel.contains(.graphPanel)) { print("createPanels(withHeightRatios: CGFloat...)", rnt)}

            

            assert(!(rnt.ratio < 0.1 || rnt.ratio > 10.0), "heightRation Range is 0.1~10.0")

            

            vHeight = rnt.ratio * 0.1 * self.jhSceneFrameHeight

            panel = jhGraphBuilder<jhScene>()

                .type(rnt.type)

                .frame(0, y, jhSceneFrameWidth*4, vHeight)

                .scene(self)

                .build()

            y += vHeight

뭐 이런 식.  그래프 빌더가 호출 될 때마다 height 값을 증가시켜서 스택뷰처럼 보이게 만든다. height가 20 이고 이전 y 값이 0이었다면 그 다음 CGRect의 y값은 20, 또 붙이면 40... 이런 식.



 

jh = junho



'진행 프로젝트 > [진행] My tools.' 카테고리의 다른 글

:-1: Segmentation fault: 11  (0) 2019.04.03
딥러닝 환경 구축 중  (0) 2019.02.07
gitlab clone error  (0) 2019.02.05
리팩토링 중 만난 몇 가지 상황  (0) 2019.02.04
정부 기관 웹 페이지 에러  (0) 2019.01.29

+ Recent posts