본문 바로가기
프로그래밍/Xcode-iOS

UITableView cell selectedColor(highlighted) Change

by Mr-후 2020. 1. 16.
반응형

디자인 가이드가 나왔을 때 짐짓 고민을 했더랬다. 예전 모 증권사 프로젝트할 때 앱이 가지고 있는 테마에 따라 셀이 선택되었을 때 반전 컬러를 적용하기 위해서 번거로웠던 기억이 있어 조심스러웠는데 이번에 회사앱에 메뉴가 들어가면서 메뉴 선택시 컬러 변경 가이드가 도착한 것이다. 어떻게 할까 고민하다 묵살하고 default로 가져갔더니 역시나 수정 요청이 왔다. 

잠시 고민을 하고 구글링을 하니 손쉽게 처리할 수 있는 방법이 있다. 그나마 다행스러운 것은 다크모드에 대응을 하지 않아서 다행이다. 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UIView *bgColorView = [UIView new];
    bgColorView.backgroundColor = _colorRGBA(249, 249, 249, 1.0);
    cell.selectedBackgroundView = bgColorView;

}

 

 

 

보통 cell의 경우는 커스텀셀을 만들어 사용하는 편인데 메뉴 셀을 누르고 있을 때 메뉴명의 알파값을 0.5 나춰달라고 하는 요청도 함께 왔다. UILabel를 사용해서 커스텀으로 만든 UITableViewCell에서 메뉴가 하이라이트된 상태가 유지되는 동안 UILabel의 알파값을 0.5로 낮추기 위해 UITableViewCell에서 setHighlighted를 오버라이드 한 상태에서 UILabel의 알파값을 조정하는 방법으로 구현했다. 

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
    [super setHighlighted:highlighted animated:animated];
    
    [self.lblMenu setAlpha:1.0f];
    if (highlighted) {
        [self.lblMenu setAlpha:0.5f];
    }
}

 

왠만한 기능들은 대부분 기본 SDK를 통해 적용이 가능하기 때문에 생각의 창을 좀 더 넓히는 연습이 정신건강에 이로울 것 같다. 

 

반응형