2017-09-08 7 views
1

Snapkit을 사용하여 자동 레이아웃 코드를 단순화하고 있습니다. 그러나 하나의 시나리오가 자주 정기적으로 팝업되는 것처럼 보입니다. 코드가 적게 드는 방법이 있는지 궁금합니다.Snapkit : 여백을 여러 개로 제한하십시오.

그럼 나는 그것이 수퍼 마진의에, 우리는 같은 것을 할 수있는 UIView의 가장자리를 고정 할 필요가 있다고 가정 해 봅시다 : 이것은 본질적으로 제외하고, 부모 뷰를 작성 하위 뷰 결과

subView.snp.makeConstraints { make in 
    make.top.equalTo(parentView.snp.topMargin) 
    make.bottom.equalTo(parentView.snp.bottomMargin) 
    make.left.equalTo(parentView.snp.leftMargin) 
    make.right.equalTo(parentView.snp.rightMargin) 
} 

부모보기 레이아웃 여백에 의해 정의 된 패딩의 소량. 나는 이것의 약간의 변형이 꽤 일반적 일 것이라고 확신한다.

이것은이 라이브러리에 대해 지나치게 자세한 것으로 보입니다. 그것은 그러나 여백과 관련하여, 헬퍼 메소드 위의 두 가지 방법으로 할 수 있습니다 내가 그들의 문서에서 찾을 관리하지 않은 어떤 이들

make.edges.equalToSuperview() 
make.top.left.right.equalToSuperview() 

같은 정말 멋진 도우미 메서드가 있습니다. (있는 경우) 내가 무엇을 찾고

에 가깝다 뭔가 : 그래서

make.edges.equalToSuperview().withMargins() 
make.top.left.right.equalToSuperview().withMargins() 
make.top.left.right.equalTo(someview).withMargins() 

가, 매우 자세한 방법보다이 다른 일을하는 방법은 무엇입니까? 설명서에 누락 된 내용이 있습니까? 아니면 확장명으로 추가 할 수 있습니까?

답변

2

당신이 이런 식으로 시도 했습니까? 코멘트 후

subView.snp.makeConstraints { make in 
    make.edges.equalTo(view.snp.margins) 
} 

편집 :

경우에만 수퍼 마진 특정 가장자리를 제한 할

, 당신은 같은 것을 할 수 있습니다.

subView.snp.makeConstraints { make in 
    make.top.leading.equalTo(view).inset(view.layoutMargins) 
} 
+0

그럼 문제의 절반이 해결되어 코드를 정리할 수 있습니다. 그러나 그것은 당신이 모든 일을하는 경우에만 작동합니다. 'make.top.left.equalTo (view.snp.margins)'는 일치하지 않기 때문에 작동하지 않습니다. 어쩌면 그 기능을 지원하는 확장 기능을 작성해야 할 필요가있을 것입니다. 그렇게하는 것이 정말 일반적인 일처럼 보입니다. 그래서 나는 이미 라이브러리에서보다 우아한 솔루션을 기대했습니다. – TRG

+0

@TRG 해당 상황에서 수행 할 수있는 작업을 편집하십시오. – JustinM

관련 문제