I ended up using this: (sorry I don't know how to post code in the regular format). It works but is anything but elegant...it basically does the first 180 degrees, and then calls another portion to add on the remainder:
Code:
-(void) refresh {
j = 1+ arc4random() % 12;
degrees = (360/12)*j-.01;
rad=(3.14159265*2)/j;
NSLog(@"%i", j);
hourhand.transform = CGAffineTransformIdentity;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
if (degrees<=180) hourhand.transform = CGAffineTransformMakeRotation(RADIANS(degrees) );
else {
hourhand.transform = CGAffineTransformMakeRotation(RADIANS(179) );
[self performSelector:@selector(secondhalf) withObject:nil afterDelay:2];
}
[UIView commitAnimations];
}
-(void) secondhalf {
// NSLog(@"%f", degrees-180);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.27*(j-6)];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
if(j==12) {
hourhand.transform = CGAffineTransformMakeRotation(3.13*2);}
else{hourhand.transform = CGAffineTransformMakeRotation(RADIANS(degrees));}
NSLog(@"%f", RADIANS(degrees));
}