SDAutoLayout 사용
SDAutoLayout의 장점과 단점
장점
1. 문법이 간단하다(공식 문법, Masonry) 2. 순수 코드의 방식은 코드 유지가 쉽다(xib,storyboard를 사용하는 것보다 쉽다) 3. UIlabel의 내용은 내용에 따라 폭을 자동으로 계산할 수 있다. 4, UItableviewCell은 자동으로 Height 5를 계산할 수 있고 UIView는 자동으로 Height 6를 계산할 수 있다. 창설할 때 alloc->init만 있으면 대응하는 프레임 5에 관심이 없다.
결점
1. leftspace toview 등 방식은 UIView가 배치된 후에 자주 볼 수 없고 때로는 정확하지 않다. 때로는self의 왼쪽 기준이고 때로는self의 오른쪽을 기준으로 한다. 일반적으로self의width는 모두 화면 너비이기 때문에 하위 컨트롤러의 x는 화면을 자주 날아간다. 2. 예상보다 많은 비용을 들일 때 디버깅을 한다.
SDAutoLayout의 사랑과 아픔
솔직히 SDAutoLayout이 정말 예상한 편리한 사용을 할 수 있다면 시원할 것 같지만 개인적으로는 그 정도는 아닌 것 같아요.물론 나의 능력에 한계가 있을 수도 있다. 많은 것들이 표면에만 머물러 있고 어쩔 수 없다. 별로 신경을 쓰지 않고 원천을 개척하고 쉽게 포기하고 싶지 않아서 원천 코드를 뜯어먹을 수밖에 없다.
원본 코드 분석
1. 프로젝트 주소https://github.com/gsdios/SDAutoLayout
2. 서류 총수는 사실대로 말하면 서류도 많지 않고 4개만 있다.이것도 내가 원본 코드를 뜯어먹고 싶은 강력한 이유다.
3. 코드 총수
146 ./UITableView+SDAutoTableViewCellHeight.h
374 ./UITableView+SDAutoTableViewCellHeight.m
457 ./UIView+SDAutoLayout.h
1712 ./UIView+SDAutoLayout.m
2689 total
4, 원본 요약 1) 키워드 활용 sdlayout, SDAutoLayoutModel을 생성하여 부모 클래스의 autoLayoutModelsArray 그룹에 추가합니다.2、sdlayoutSubviews는 위에서 생성된 SDAutoLayoutModel에 따라 프레임을 계산합니다
3) 프로세스 분석 1) 먼저 sd 사용layout은 부류에 일련의 SDAutoLayoutModel 유형의 그룹을 추가합니다 autoLayoutModelsArray 2) sdlayout Subviews Handle은 auto Layout Models Array에 따라 각 자view를 옮겨다니며 각 자view의 프레임 셋을 계산합니다) sdresizeWithModel 함수에서 서브뷰의 프레임을 생성합니다. 서브프레임에 sd 가 존재하면bottomViewsArray 및 sdrightViewsArray 배열은 위의 단계를 반복적으로 수행합니다.
5. 유형 구성
https://github.com/gsdios/SDAutoLayout
146 ./UITableView+SDAutoTableViewCellHeight.h
374 ./UITableView+SDAutoTableViewCellHeight.m
457 ./UIView+SDAutoLayout.h
1712 ./UIView+SDAutoLayout.m
2689 total
UIView
@interface SDAutoLayoutModelItem: NSObject@interface UIView(SDChange Frame) 최종 결과 처리 @interface SDUIView Category Manager: NSObject5. 주요 함수 분석
view
3. if(self.autoLayoutModelsArray.count)가 진정으로 프레임 계산을 하는 판단은 주로 두 단계로 나뉘는데 첫 번째 단계는 캐시 처리이고 두 번째 단계(sd resizeWithModel)는 프레임의 계산이다.
4,if(self.tag = kSDModelCellTag & & [self isKind OfClass: NSClass FromString(@ "UItable ViewCell ContentView")]))UItableviewcell 등 높은 계산을 해결하는 것은 위의 함수가 이 문제를 완전히 해결하지 못했기 때문에 이런 판단을 추가로 넣어야 한다.그리고 UItable ViewCell Content View가 아니라 UItable ViewCell이기 때문에 UItable ViewCell에 하위 UIView를self에 넣어야 합니다.contentview가 아니라view에 있습니다. 그렇지 않으면 이 판단이 효력을 상실하여cell의 높이 계산에 실패할 수 있습니다.
데이터 계산 결과는 보통bottom 을 사용합니다sd,height_sd 등 이 데이터를 저장하는 것은view에 존재한다.이것은 새 버전의 처리입니다. 구 버전의 데이터는 접미사가 없습니다.sd.새 버전은 구 버전의 데이터와 호환된다.주로 @interface UIView(SDChangeFrame) 완료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.