[ios] UIView에 알파를 설정하면 발생하지 않아야하는 하위 뷰에 알파가 설정됩니다.

문서에 따르면 UIVIew @property(nonatomic) CGFloat alpha

이 속성의 값은 0.0에서 1.0 사이의 부동 소수점 숫자입니다. 여기서 0.0은 완전 투명을 나타내고 1.0은 완전 불투명을 나타냅니다.
이 값은 현재보기에만 영향을 미치며 포함 된 하위보기에는 영향을주지 않습니다.

다음과 같이 구성된 컨테이너보기가 있습니다.

self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];

그런 다음 ‘myView’에 하위보기를 추가합니다.

[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected

그러나 ‘ anotherView ‘는 화면에 알파가 있습니다 (예상대로 불투명하지 않습니다)

어떻게 이것이 가능하고 무엇을 할 수 있습니까?



답변

나는 이것이 문서의 버그라고 생각합니다. bugreport.apple.com에 제출해야합니다.

약간의 빠른 조사 후에 내가 볼 수있는 모든 것은 당신이보고있는 것이 항상 어떻게 행동했는지를 시사합니다. 그리고 내 테스트도 그것을 보여줍니다.

보기의 알파는 모든 하위보기에 적용됩니다.

아마도 당신이 필요로하는 전부는 [[UIColor blackColor] colorWithAlphaComponent:0.5]하지만 그렇지 않다면보기를 아이 대신 형제로 만들어야 할 것입니다.


답변

부모 뷰에서 직접 알파를 설정하지 마십시오. 대신 하위 뷰에 영향을주지 않고 parentview에 투명성을 적용하는 아래 코드 줄을 사용합니다.

[parentView setBackgroundColor : [[UIColor clearColor] colorWithAlphaComponent : 0.5]];


답변

신속하게

view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)

SWIFT 3 용으로 업데이트 됨

view.backgroundColor = UIColor.white.withAlphaComponent(0.5)


답변

알파 대신 배경색의 불투명도를 설정해도 하위 뷰에는 영향을주지 않습니다.

  1. 보기를 선택하십시오.
  2. 배경색보다 속성 관리자로 이동
  3. “기타”를 클릭하십시오
  4. 불투명도를 30 %로 설정

또는 프로그래밍 방식으로 설정할 수 있습니다.

var customView:UIView = UIView()
customView.layer.opacity = 0.3

그게 다야. 행복한 코딩 !!!


답변

스토리 보드가 마음에 들면 User Defined Runtime Attribute다음 위치에보기를 입력하십시오 Identity Inspector.

Key Path: backgroundColor, Type: Color, Value:불투명도 50 % 흰색을 예.


답변

논의 된 가장 간단한 해결책은 다음과 같이 알파를 변경하는 것입니다. Xcode 8 Swift 3의 업데이트 된 버전은 다음과 같습니다.

yourParentView.backgroundColor = UIColor.black.withAlphaComponent(0.4)

목표 C :

yourParentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];

https://developer.apple.com/reference/uikit/uiview/1622417-alpha 에서 Apple 개발자 문서를 참조하십시오.


답변

Swift 4.2 및 Xcode 10.1에서

스토리 보드를 통해 색상과 알파 값을 추가하지 마십시오. 이 경우 프로그래밍 방식 만 작동합니다.

transparentView.backgroundColor = UIColor.black.withAlphaComponent(0.5)