코드로 UI를 그리다 보면 중첩이 많다. 그렸다 지웠다 하는 경우는 레이어를 쓰게 되고 그 외 뷰는 대부분 UIView로 그리게 된다. 또, 하나의 파일에 넣는게 길어져 파일을 나누고, 결국은 클래스를 나누게 된다.
import UIKit
import SnapKit
class InsidePanel1 : UIView {
var ret = UIView()
var item1 = UILabel()
var img1 = UILabel()
var item2 = UILabel()
var item3 = UILabel()
func entry() {
item1.text = "Item1"
ret.addSubview(item1)
ret.addSubview(img1)
ret.addSubview(item2)
ret.addSubview(item3)
self.addSubview(ret)
}
}
또 그룹을 나누게 된다.
lazy var topGroup : UIView = {
let uptownGirls : UIView = UIView()
return uptownGirls
}()
lazy var leftGroup : UIView = {
let leftHander : UIView = UIView()
return leftHander
}()
lazy var rightGroup : UIView = {
let uRright : UIView = UIView()
return uRright
}()
UIView라서 스크롤뷰도 안에 넣을 수도 있고 기타 그래픽 stuff도 모두 넣을 수 있다.
lazy var imgBloodSugar : UIView = {
let view : UIView = FilledRect(frame: CGRect(x: 0, y: 0, width: 10, height: 18), level: 1, color : colorLiteral(red: 0.9529411793, green: 0.6862745285, blue: 0.1333333403, alpha: 1))
return view
}()
가능
lazy var labelUpperValue : UILabel = {
let label: UILabel = UILabel()
label.font = UIFont.init(name: "NanumSquareOTFL", size: 16)
label.text = "......--%(---회)"
label.textAlignment = .center
label.textColor = colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)
return label
}()
가능
코드로 모두 그렸기에 redraw 나 refresh 도 가능하다.
func jhRedraw() {
print("xDistance", xDistance)
dataLayer.removeFromSuperlayer()
.
.
.
open func refresh() {
if let view = zoomView {
display(view: view)
}
}
redraw 만을 위한 큐를 만들어서 for문을 돌며 한꺼번에 redrawing 도 가능 하다.
protocol observer_p {
func jhRedraw()
}
선언하고
private static var listeners = [observer_p]()
static func attachObserver(observer : observer_p) {
listeners.append(observer)
}
전역에서 호출하게 만들고
public static func notiDataDowloadFinish() {
for x in listeners {
x.jhRedraw()
}
}
모두 호출해 주면 된다.
필요한 상황에 필요한 drawing만 가능하니까 무조건 반응형(reactive)으로 만드는 것보다. 효율적이다.
소스 고치기도 쉽다.
override func jhRedraw() {
drawAxes()
옵저버 프로토콜을 구현한 애들만 리스너에서 제외하던지 해당 함수를 지워버리면 된다.
너무 쉬운 것만 추구하면 기본을 잊어버리고 유연성을 잃어버리게 된다. Swift design pattern 책이 많다.
모듈 디자인은 디자인 패턴 책 하나면 충분하다.
내가 이전 블로그에서 여기에 해당 책을 올려놨는지 기억이 안난다. 최근 술을 자주 마셔서 black out 이 온다. 중복 사진을 올리더라도 독자의 너그러운 이해를 구한다.
'3D world > Unreal Engine Games Review' 카테고리의 다른 글
브로드 캐스트 구조 만들기 (0) | 2019.01.21 |
---|---|
master detail view에서 master view 계속 보이도록 하기 (0) | 2019.01.20 |
전역 바이너리 세마포어, 전역 queue 설정 (0) | 2019.01.19 |
아이폰별 화면 해상도 (0) | 2019.01.18 |
어디에나 띄우는 로딩중 동그라미 + 딜레이 주는 방법 (0) | 2019.01.17 |
최근댓글