Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 24小时模拟时钟_Iphone_Objective C_Ios - Fatal编程技术网

Iphone 24小时模拟时钟

Iphone 24小时模拟时钟,iphone,objective-c,ios,Iphone,Objective C,Ios,我正在尝试制作一个24小时模拟时钟,目前有一个12小时的时钟 我写的是: currentTime = [NSDate date]; dateComponents = [calendar components:unitFlags fromDate:currentTime]; hour = [dateComponents hour]; minute = [dateComponents minute]; second = [dateComponents second]; hourAngle =

我正在尝试制作一个24小时模拟时钟,目前有一个12小时的时钟

我写的是:

   currentTime = [NSDate date];
dateComponents = [calendar components:unitFlags fromDate:currentTime];
hour = [dateComponents hour];
minute = [dateComponents minute];
second = [dateComponents second];
hourAngle = (30 * hour + minute / 2);
minAngle = (6 * minute);
secAngle = (6 * second);
secondHand.transform = CGAffineTransformMakeRotation(secAngle * M_PI / 180);
minuteHand.transform = CGAffineTransformMakeRotation(minAngle * M_PI / 180);
hourHand.transform = CGAffineTransformMakeRotation(hourAngle * M_PI / 180);
这对于12小时的时钟来说非常有效,但我想将其设为24小时,因此建议我将角度值除以2,如下所示:

hourAngle = (30 * hour + minute / 2) /2;
minAngle = (6 * minute) /2;
secAngle = (6 * second) /2; 
    h13Number = numberOfHoursInTheDay_OnTheClockFace; //24 if You want a 24h day, or 13 if You want a 13h day
    h13Ratio = h13Number*2 / 24.0f;
然而,这给了我一个从上到下的180度角,在达到180度后重置


我需要改变什么才能使我的时钟完全360度旋转?

显然,分钟和秒的角度不会改变。只有小时角减半。另外,要确保小时达到了23以内的所有值。

显然,分钟和秒的角度不会改变。只有小时角减半。另外,请确保小时达到23以下的所有值。

您要做的是将24小时的时钟旋转为12小时,您可以使用模来实现这一点,如下所示:

hourAngle = (30 * (hour % 12) + minute / 2);

你要做的是把24小时的时钟旋转到12小时,你可以用一个模来表示如下:

hourAngle = (30 * (hour % 12) + minute / 2);

我创建了一个项目,使模拟风格的时钟,这是在这里可用。我用这个来计算时间

编辑-感谢@nes1983

int hoursFor12HourClock = hours % 12;
然后计算我使用的角度

float rotationForHoursComponent  = hoursFor12HourClock * degreesPerHour;
float rotationForMinuteComponent = degreesPerMinute * [self minutes];

float totalRotation = rotationForHoursComponent + rotationForMinuteComponent;

我创建了一个项目,使模拟风格的时钟,这是在这里可用。我用这个来计算时间

编辑-感谢@nes1983

int hoursFor12HourClock = hours % 12;
然后计算我使用的角度

float rotationForHoursComponent  = hoursFor12HourClock * degreesPerHour;
float rotationForMinuteComponent = degreesPerMinute * [self minutes];

float totalRotation = rotationForHoursComponent + rotationForMinuteComponent;

不是直接的回答,更像是另一种观点下面这段代码取自AppStore上提供的应用程序,由您的无头站立程序员编写

在没有太多解释的情况下,看看cocos2d step方法ii,也许它能让你对永恒有更多的了解:

如果将h13Ratio变量设置为如下值:

hourAngle = (30 * hour + minute / 2) /2;
minAngle = (6 * minute) /2;
secAngle = (6 * second) /2; 
    h13Number = numberOfHoursInTheDay_OnTheClockFace; //24 if You want a 24h day, or 13 if You want a 13h day
    h13Ratio = h13Number*2 / 24.0f;
H13比值2。这是有道理的,因为钟面上的数字是原来的两倍


享受

不是一个直接的答案,更像是一个额外的视角下面这段代码取自AppStore上提供的应用程序,由您的无头站立程序员编写

在没有太多解释的情况下,看看cocos2d step方法ii,也许它能让你对永恒有更多的了解:

如果将h13Ratio变量设置为如下值:

hourAngle = (30 * hour + minute / 2) /2;
minAngle = (6 * minute) /2;
secAngle = (6 * second) /2; 
    h13Number = numberOfHoursInTheDay_OnTheClockFace; //24 if You want a 24h day, or 13 if You want a 13h day
    h13Ratio = h13Number*2 / 24.0f;
H13比值2。这是有道理的,因为钟面上的数字是原来的两倍


享受

第一行代码是否是一种晦涩难懂的编写小时数的方法For12hourLock=hours%12?此外,OP有一个相反的问题:如何制作24小时时钟。第一行并不模糊,它只是说如果小时数小于12,那么返回小时数,否则返回小时数-12。如果你读到这个问题,问题是如何从12小时或24小时开始显示一个表面上有12小时的模拟时钟。对不起,我真的想了你说的话,是的,这似乎是一种蹩脚的做法。这是第一行代码,一种写小时数的晦涩方式。for12hourlock=hours%12?此外,OP有一个相反的问题:如何制作24小时时钟。第一行并不模糊,它只是说如果小时数小于12,那么返回小时数,否则返回小时数-12。如果你读到这个问题,问题是如何从12小时或24小时开始显示一个表面上有12小时的模拟时钟。对不起,我真的想了你说的话,是的,这似乎是一个蹩脚的方法。我不知道为什么我没有想到只需要划分小时角。分和秒角显然不需要它。我已经用了12个小时了,它还没有自动复位,到目前为止我觉得很好。谢谢我不知道为什么我没有想到只需要划分小时角。分和秒角显然不需要它。我已经用了12个小时了,它还没有自动复位,到目前为止我觉得很好。谢谢