사용자 지정 UIView
개체의 계층 구조가 있습니다. 리프보기를 선택할 수 있습니다. 그들은 그것에 isSelected
속성이 있습니다. 이 값을 YES
으로 설정하면 뷰가 내 "선택한"색으로 즉시 변경된 다음 크기가 일시적으로 증가하고 원래 크기로 돌아갑니다. 정말 무슨 일이 일어나고 있는지 보려고했기 때문에, 내가 여기에 시간과 변위를 과장 한사용자 정의보기 선택 항목에 부풀음 및 색상 변경을 적용하는 방법은 무엇입니까?
self.backgroundColor = [UIColor colorWithRed: 0 green: 0.5 blue: 1 alpha: 1];
CGRect currentFrame = self.frame;
CGRect bigFrame = CGRectInset(currentFrame, -50, -50);
[UIView animateWithDuration: 0.4 animations:^{
self.frame = bigFrame;
} completion:^(BOOL finished) {
if (finished) {
[UIView animateWithDuration: 0.4 animations:^{
self.frame = currentFrame;
}];
}
}];
: I 다음 코드는 트릭을 할 것 생각했다. 무슨 일이 일어나는가, 색상 변화가 움직이는 것처럼 보이므로, 그것의 기본 백색도 0.93에서 파란색으로 서서히 변화합니다. 또한 크기가 커지지 않습니다. 그것은 삽입물 양만큼 아래로 오른쪽으로 변환 한 다음 모든 방향으로 성장하는 것이 아니라 정상적인 지점으로 돌아가는 것처럼 보입니다.
무엇이 누락 되었습니까?
전에 키 프레임 변형을 사용한 적이 없습니다. 감사! 이것은 대부분 효과가있었습니다. 적어도 예기치 않게 행동하지 않았습니다. 내가 가지고있는 두 가지 질문. 1) 변환을 사용하면 원래 크기에 비해 임시 크기가 증가합니다. 그렇게하면 작은 사람들이 조금씩 튀어 나오게되고, 큰 사람들은 실제로 커지게됩니다. 차라리 프레임의 "처음"이라는 균일 한 픽셀을 갖고 싶습니다. 대체 방법이 있습니까? 원하는 픽셀 오프셋을 얻기 위해 스케일을 역산 할 수 있습니다. 2)'CATransform3D'에 대한 문서를 찾을 수 없습니다. 나는 그들을 변화시키는 기능을 발견했다. 그러나 .scale을 찾으려면 어디로 가야할지 모르겠다. –
프레임을 수행하기 위해 나는'bounds' keyPath로 바꿨다. (분명히, 당신은 레이어의 프레임을 애니메이트하지 않아도되지만, 경계와 위치 등). 그리고'CGRect' 주위에'NSValue' 배열을 만들었습니다. –
이전에 프레임에 따라 바운스 값을 계산하고 업데이트 답변을보고 쉽게 달성 할 수 있습니다. –