두 개의보기가 마치 "하나의보기"처럼 작동하도록합니다. 즉,보기 1이 'x'픽셀 위로 이동하면보기 2가 계속 이동하게됩니다. x 축은 모든 종류의 오프셋을 계산할 필요없이 동일한 양의 픽셀을 (임의의 방향으로) 표시합니다. 작은 뷰 경사를하고 회전 및 y 위치를 변경 - 두 개의보기를 하나의보기로 이동하기 위해 두 개의보기를 붙이는 방법
나는 그래서이UIView *v1 = [[UIView alloc] initWithFrame:CGRectMake(320-150, 150, 150, 100)];
v1.backgroundColor = [UIColor blackColor];
[self.view addSubview:v1];
self.v1 = v1;
UIView *v2 = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.size.width,
0,
self.view.bounds.size.width,
self.view.bounds.size.height)];
v2.backgroundColor = [UIColor redColor];
[self.view addSubview:v2];
self.v2 = v2;
UIPanGestureRecognizer *p =
[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[v1 addGestureRecognizer:p];
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
UIAttachmentBehavior *att =
[[UIAttachmentBehavior alloc] initWithItem:self.v1
offsetFromCenter:UIOffsetZero
attachedToItem:self.v2
offsetFromCenter:UIOffsetMake(0,
self.v1.center.y - self.v2.center.y)];
att.damping = 0;
[self.animator addBehavior:att];
self.att = att;
-(void)pan:(UIPanGestureRecognizer *)gesture {
if(gesture.state == UIGestureRecognizerStateChanged) {
CGPoint p = [gesture locationInView:self.view];
// move only on x axis but keep on same y point
self.v1.center = CGPointMake(p.x, self.v1.center.y);
[self.animator updateItemUsingCurrentState:self.v1];
}
}
을 시도하지만 그들은 서로 상호 작용하는 좋은 후보가 될 것입니다 새로운 UIDynamicAnimator
를 사용하여 생각했다.
나는 하나의 축에서만 "하드"가 서로 연결되어 있기를 바랄 것입니다.
그리고 내가 추가 할 수 있으면 좋겠다 0 –
에 수퍼와 수퍼의 알파에 팬 제스처 인식기를 설정하는 것을 잊지 마세요 두 뷰가 같은 계층에 있지만 뷰 뷰에 속한 뷰와 컨테이너 뷰에 속한 뷰는 서로 연결되어 있지 않으며 서로 지식이 없습니다. 예제는 데모 용도로만 사용되었습니다. 나는 그것으로 놀고 있었다). 목표는 두보기가 함께 움직이는 것입니다. 자동 선택은 불가능합니다. 현재 'view2'의 원점을 수동으로 'x'픽셀로 변경하는 중입니다. 그러나 고르지 않아 좋지 않습니다. ( –
그 경우 원점을 수동으로 변경하는 것을 생략하는 쉬운 방법이 없다고 생각합니다. [KVO] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving)를 고려해 볼 수 있습니다. html) ([간단한 설명은 여기에있다.] (http://nshipster.com/key-value-observing/))을 사용하여 범위의 뷰 원점이 언제 바뀌는지를 관찰 할 수있다. 그러나 그것이 'UITableViewCell'이라면 세포 재사용 때문에 문제가 생길 수 있습니다. –