2014-09-24 2 views
6

UITableViewController (UINavigationController 루트에 있음)를 만들고 다른 뷰 컨트롤러 위에 모달로 표시하고 있습니다. 뷰가로드되고 viewDidAppear이 호출 될 때 시각적 효과가 좋게 보이도록 범위가 작동합니다. 그러나 viewDidAppear 직후에는 시각 효과가 사라지고 tableview는 흰색 배경을 갖습니다. 내 발표있는 UITableViewController에서UITableView 배경의 UIVisualEffectView

, 내가있는 viewDidLoad이 추가 :

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if (NSClassFromString(@"UIVisualEffectView")) { 
     cell.backgroundColor = [UIColor clearColor]; 
    } 
} 

나는 또한 cell.backgroundColor = [UIColor clearColor]의 설정 :

if (NSClassFromString(@"UIVisualEffectView") && !UIAccessibilityIsReduceTransparencyEnabled()) { 
    self.tableView.backgroundColor = [UIColor clearColor]; 
    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 
    UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 
    [blurEffectView setFrame:self.tableView.frame]; 

    self.blurView = blurEffectView; 
    self.tableView.backgroundView = self.blurView; 
} 

나는 또한 세포가 분명 배경이 있는지 확인하기 위해,이를 구현 tableView의 cellForRowAtIndexPath:하지만 그건 도움이되지 않습니다.

다시보기가로드 될 때 올바른 효과를 얻지 만 화면에 나타나 자마자 배경이 흐리게 표시됩니다. 어떤 아이디어가 잘못 될 수 있습니까? 또한 blueEffectView 속성을 내 View Controller의 속성으로 유지하려고 시도했지만 행운이 없었습니다.

+0

문제에 대한 해결책이 있습니까? 나는 같은 문제가 있다고 생각한다. BackgroundView'tableView.backgroundView'를 설정 한 후에는 연한 회색의 BackgroundView **를 ** 아무런 흐림 효과없이 ** 사용할 수 있습니다. – Stone

+0

@Stone 안녕하세요, 저는 같은 문제가 있습니다. 너는 어떤 생각을 가지고 있니? –

+0

@Wongzigii 불행히도 없습니다. 여전히 해결책이 없습니다. – Stone

답변

3

문제는 뷰 컨트롤러가 모달로 기본 설정으로 표시 될 때 화면 전환이 끝나면 기본 보기 컨트롤러가 본질적으로 지워진 것 같습니다. 이것이 프리젠 테이션 애니메이션이 완료 될 때까지 블러 효과가 커 보이는 이유입니다. 기본보기가 사라집니다.

원하는 동작을 구현하려면 기본 전체 화면 대신 전체 화면에서와 같이 기본보기 컨트롤러를 유지할 무언가로 표시 스타일을 변경해야합니다.

이 모달 프레젠테이션을 닫을 때 viewDidAppear은 항상 표시되는 프레젠테이션보기 컨트롤러에서 호출되지 않습니다. 해고시 그 기능을 수행하기 위해 그 방법에 의존한다면 그것은 당신을 물 수도 있습니다.

+0

비슷한 문제가있었습니다. 그리고이 수정은 트릭을했습니다 !! 다음은 프로그래밍 방식으로 수행 한 방법입니다 (Obj-C 및 Swift). 'viewToBePresented.modalPresentationStyle = UIModalPresentationCurrentContext; viewToBePresented.modalTransitionStyle = UIModalTransitionStyleCoverVertical; ' 'viewToBePresented.modalTransitionStyle = UIModalTransitionStyle.CoverVertical viewToBePresented.modalPresentationStyle = UIModalPresentationStyle.OverFullScreen' – Priest

+0

@Priest 당신은 오타가 : 당신이 원하는 modalPresentationStyle이 UIModalPresentationOverCurrentContext입니다 OBJ (-C)와 OverCurrentContext (스위프트) –

6

스토리 보드를 사용하고 있습니까?

모달로 사용되는 (또는 다른 VC로 래핑 된 경우 래퍼를 선택하는)보기 컨트롤러를 선택하고 프레젠테이션 콤보 상자를 "전체 화면으로"또는 "현재 콘텍스트"로 설정하십시오. (사실 둘 다 같은 일을하는 것, 그 차이가 무엇인지 알 수 없습니다.)

Screenshot of Xcode

을 그 일 후, 흐림 효과 그냥 작동 ™해야한다. 또한 iOS 8의 새로운 기능이라고 생각합니다. 아직 iOS 7에서는 테스트하지 않았습니다.