2017-12-18 5 views
0

뷰의 오른쪽 상단에 메뉴 버튼 (+)이 있습니다. 버튼을 누르면 다른 여러 버튼이 드롭 다운되면서 선택됩니다.버튼 백그라운드에서 모든 뷰 디밍

이 모든 단추 아래의 모든보기를 효율적으로 어둡게하고 싶습니다.

내가 현재하고있는 방식은 버튼을 클릭 한 후에 투명도뿐만 아니라 배경색 및 투명도를 변경하는 것입니다.

if button.isHidden { 
    self.dimView!.backgroundColor = UIColor.black 
    self.dimView!.alpha = 0.7 
} else { 
    self.dimView!.alpha = 0 
} 

이 방법을 효과적으로 사용할 수 있습니까? 감각에 방해가되지 않으며 전화가 느려지지 않는다는 점에서 효율성이 있습니까?

+0

보기가 배경에 있으면 드롭 다운 버튼의 터치를 방해하지 않습니다. –

+0

@ShamasS 뷰가 테이블 뷰 및 다른 레이블 위에있는 경우, 뷰의 상단에 있지만 테이블 뷰가 지연 될지 확실하지 않은 경우 터치를 방해하지 않는 것처럼 보입니다. – gencode

답변

1

귀하의 디밍보기 해야 그것을 커버 플레이에 해제 탭이 알파가 0.5 이상이다.

알파를 0으로 설정하면 view.hidden=true으로 설정해야합니다. 그런 식으로 렌더링 시스템은 화면의 다른보기와 합성하려고하지 않습니다. 알파를 0.7로 설정하기 전에 hidden=false을 설정하고 알파를 0으로 설정하는 대신 hidden=true을 설정하기 전에 알파 값을 애니메이션으로 지정하지 않는 한 숨김 = true로 설정하면 알파 값이 적합하지 않습니다.

+0

고마워요.이게 내가 찾고 있던 것이지만, 분명히하기 위해서, 이것을하는 것이 최선의 방법일까요? – gencode

+1

** 나는 ** 최선의 방법에 대해 잘 모르겠지만, 내가 한 일이고 잘 작동합니다. –

0

투명 뷰는 원하는 결과를 얻기 위해 ViewController의 모든 서브 뷰의 백그라운드에 있어야합니다. 효율적이고 최적화 방법에 관한

는, 다음 뷰의 불투명 속성을 설정하는 것이 더있을 것입니다, 여기에 대한 설명입니다 -

"불투명"는 속성이 방법으로 도면 시스템에 대한 힌트를 제공

그것 보기를 치료해야합니다. true로 설정하면 도면 시스템이 뷰를 완전 불투명으로 처리하므로 도면 시스템에서 일부 도면 작업을 최적화하고 성능을 향상시킬 수 있습니다. false로 설정하면 드로잉 시스템이 뷰를 다른 콘텐트와 정상적으로 합성합니다. 이 속성의 기본값은 true입니다.

불투명 뷰는 해당 경계를 완전히 불투명 한 내용으로 채울 것으로 예상됩니다. 즉, 내용의 알파 값은 1.0이어야합니다. 보기가 불투명하고 경계를 채우지 않거나 전체적으로 또는 부분적으로 투명한 내용이 포함되어 있으면 결과를 예측할 수 없습니다. 뷰가 이거나 완전히 부분적으로 투명하면 은 항상이 속성 값을 false로 설정해야합니다.

코드는 다음과 같이해야한다 : -

view.backgroundColor = UIColor.black.withAlphaComponent(0.75) 
view.isOpaque = false 
+0

죄송합니다. 내 질문이 명확하지 않은 것 같아요. 모든 라벨과 버튼 위에 있지만 (+) 버튼 아래에 일반보기를 추가했습니다. 이 버튼을 클릭하면 다른 뷰 위에 놓인 뷰를 검정색으로 바꾸어 투명하게 만듭니다. – gencode

관련 문제