1

customをUIView含むクラスがありますUISlider。これUIViewがviewControllerに追加されると、ランダムに回転されます

newSlider.transform = CGAffineTransformRotate(newSlider.transform, degreesToRadians(random));

今私がやろうとしているUISliderのは、スライダーの端から飛んでいる親指の画像をアニメーション化することです。私が直面している問題は、スライダーの開始/終了の座標を取得することです。これにより、親指の画像がどの方向に移動しているかを判断できます。

使用してみtrackRectForBoundsましたが、適用された回転に関係なく、まったく同じ座標が得られますUIView

UIViewクラス内でこれらを試しました:

CGRect trackRect = [customSlider trackRectForBounds:customSlider.bounds];

CGRect trackRect2 = [customSlider trackRectForBounds:self.window.bounds];

これにより、回転に関係なく {{2, 1}, {288, 50}} & {{2, 215}, {316, 50}} が得られます。画面ではなく内から四角形を与えていると思いUIViewます。

4

1 に答える 1

2

スライダーの終点の取得は、次のように実行できます。

ここに画像の説明を入力してください

CGFloat rotation = [[newSlider.layer valueForKeyPath:@"transform.rotation.z"] floatValue];

CGFloat halfWidth = newSlider.bounds.size.width/2;
CGPoint sliderCenter = newSlider.center;
sliderCenter.y += newSlider.bounds.size.height/2; //this shouldn't be needed but it seems it is

CGFloat x1 = sliderCenter.x - halfWidth * cos(rotation);
CGFloat x2 = sliderCenter.x + halfWidth * cos(rotation);

CGFloat y1 = sliderCenter.y - halfWidth * sin(rotation);
CGFloat y2 = sliderCenter.y + halfWidth * sin(rotation);

CGPoint T1 = CGPointMake(x1, y1);
CGPoint T2 = CGPointMake(x2, y2);
于 2012-06-08T12:20:33.107 に答える