2014-06-10 1 views
3

원활하게 작동하는 내 IOS 응용 프로그램에 대한 사용자 지정 활동 표시기보기를 구현했습니다. 사용자 정의 활동 표시기가 움직이는 동안 수퍼 뷰의 알파를 50 % (또는 반투명)로 설정하고 사용자 정의 활동 표시기가 중지되면 정상으로 설정해야합니다. 보기 위해 사용자 지정 활동 표시기를 추가하려면 다음 클래스 메서드를 사용하고 있습니다.사용자 활동보기 표시기에 대한 UIView 반투명 만들기

+ (CustomActivityIndicatorView*)addCustomActivityIndicatorToView:(UIView *)view 
{ 
    CustomActivityIndicatorView *customActivityIndicatorView = [[CustomActivityIndicatorView alloc]init]; 
    customActivityIndicatorView.hidesWhenStopsAnimating = NO; 
    [customActivityIndicatorView setFrame:CGRectMake(view.bounds.size.width/2-(customActivityIndicatorView.frame.size.width/2), view.bounds.size.height/2-(customActivityIndicatorView.frame.size.height/2), customActivityIndicatorView.frame.size.width, customActivityIndicatorView.frame.size.height)]; 
    [view addSubview:customActivityIndicatorView]; 
    [customActivityIndicatorView startAnimating]; 

    return customActivityIndicatorView; 
} 

[view setAlpha : 0.5]를 설정할 때 문제는 사용자 지정 활동 표시기를 포함하여 모든 하위보기에 알파를 설정한다는 것입니다. superview가 사용자 정의 활동 표시기가 아닌 페이드 상태로 유지하려고합니다.

이 링크를 모두 읽으십시오.

iOS controlling UIView alpha behaviour for subviews

UIView group opacity in single view heirachy

https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

또한 layer.shouldRasterize을 설정하기 위해 노력하고 그룹 불투명하지만 아무것도에 대한 PLIST 키를 도왔다. 도와주세요!

답변

4

대신 전체 수퍼 페이딩, 당신은 그것의 위에 반 흰색 또는 반 검은 색 오버레이를 삭제할 수 있습니다, 수퍼 뷰와 표시기 사이. 그것은 시각적 인 트릭을 할 것입니다.

오버레이는 alpha = 1.backgroundColor = [UIColor colorWithWhite:1. alpha:.5]

+0

예, 그렇게하려고 시도했지만 작동하지만 사용자 상호 작용을 사용하지 못하게합니다 ... customActivityIndicatorView가 회전하는 동안 사용자가보기와 상호 작용할 수 있다고 요구 사항이 설명하는 곳에서. 감사합니다 – user3404693

+0

오버레이는 사용자 상호 작용을 차단할 필요가 없습니다. 'userInteractionEnabled' 속성을 NO로 설정하면됩니다. – Cyrille

1

그냥 반투명 흰색에보기의 배경 색상을 설정

customActivityIndicatorView.backgroundColor = [UIColor colorWithWhite:1. alpha:.5]; 
+0

감사있을 것입니다,하지만 난 반투명 아닌 customActivityIndicatorView의 배경합니다 (customActivityIndicatorView이 하위 뷰로 추가되는)에 수퍼를 원한다. – user3404693