xcode7, objective-c, iPod touch の初心者です。
これは、背骨が横に曲がる病気(側弯症)を早期に発見するデバイスの完成予想図です。
児童を立位前屈した状態で、ipodtouch を乗っけたローラーを腰から頸部に向けて転がして行ったとき、その角度によって表示色を変えようとしています。即ち、傾斜角が0から4度であれば青バー(安全域)、5〜9度であれば黄色バー(注意域)、10度以上であれば赤バー(危険域)、となり、黄色バーが表示された時点で、画面下に「専門医受診を促すメッセージ」を表示させます。ここでの傾斜角5度が、側弯角20度に相当していると言われています。
そこで、実際の測定においては、前屈させた児童の腰から首にむけて ipodtouch をつけたローラーを転がして行くのですが(10秒を目処に)、その開始時間からの秒数が swtch 文の引数にしてあります。ですから、傾斜バーは、下の腰の方から表れていくようにしてあります。横の数値は、傾斜角です。
だいたいのイメージをつかんで頂けたでしょうか。
ここで、
storyboard上に貼った、image view 上に、スイッチ文に対応した位置に angle の
値に応じて、青、黄色、赤の水平バーを引き、黒の枠線を付けています。
ただ、スイッチ文が例えば、1から2に移動すると、1で表示したバーが消えてしまい、3に行くと2で描いたバーが消えてしまいます。
これを、消えないようにするには、どうしたらよいのでしょうか。
どなたか、ご教示頂けましたら、幸いです。
宜しくお願い致します。
UIGraphicsBeginImageContext(_Image_View.frame.size); CGContextRef context = UIGraphicsGetCurrentContext(); // コンテキストを取得 switch (time_dif) { case 1: if (angle == 0 ) {self.y10.transform = CGAffineTransformMakeScale(0, 1); self.x10.transform = CGAffineTransformMakeScale(0, 1); self.R10.text =[NSString stringWithFormat:@"%.0f",angle * 0]; self.L10.text =[NSString stringWithFormat:@"%.0f",angle * 0]; angle_disp[time_dif-1] = angle; } // 角度:正 被検者の左サイド 右バー else if (angle > 0 ){ if (fabsf(angle) < bndry_1 ) { CGContextSetRGBStrokeColor(context, 0, 0, 1, 1.0);}// 青 else if (fabsf(angle) >= bndry_1 && fabsf(angle) < bndry_2){ CGContextSetRGBStrokeColor(context, 1, 1, 0, 1.0);} // 黄色 else if (fabsf(angle) >= bndry_2 ) { CGContextSetRGBStrokeColor(context, 1, 0, 0, 1.0);} // 赤 CGContextMoveToPoint(context, y10_x, y10_y+5); // 始点 CGContextAddLineToPoint(context, y10_x+100*angle_ratio, y10_y+5); // 終点 CGContextSetLineWidth(context,10); // 線幅 CGContextStrokePath(context); // 線描画 CGContextSetRGBStrokeColor(context, 0, 0, 0, 1.0);// 枠色: 黒 CGContextSetLineWidth(context,1); // 線幅 CGRect r1 =CGRectMake(y10_x, y10_y, 100*angle_ratio, 10); CGContextAddRect(context, r1); CGContextStrokePath(context); // 四角描画 _Image_View.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); angle_disp[time_dif-1] = angle; self.L10.text =[NSString stringWithFormat:@"%d",angle_disp[time_dif-1]];} // 角度:負 被検者の右サイド 左バー else if (angle < 0){ if (fabsf(angle) < bndry_1 ) { CGContextSetRGBStrokeColor(context, 0, 0, 1, 1.0);} // 青 else if (fabsf(angle) >= bndry_1 && fabsf(angle) < bndry_2){ CGContextSetRGBStrokeColor(context, 1, 1, 0, 1.0);} // 黄色 else if (fabsf(angle) >= bndry_2 ) { CGContextSetRGBStrokeColor(context, 1, 0, 0, 1.0);} // 赤 CGContextMoveToPoint(context, x10_x+ 100, x10_y+5); // 始点 CGContextAddLineToPoint(context, (x10_x+100) - (100*angle_ratio), x10_y+5); // 終点 CGContextSetLineWidth(context,10); // 線幅 CGContextStrokePath(context); // 線描画 CGContextSetRGBStrokeColor(context, 0, 0, 0, 1.0);// 枠色: 黒 CGContextSetLineWidth(context,1); // 線幅 CGRect r1 =CGRectMake(x10_x+ (100-fabsf(100*angle_ratio)), x10_y, fabsf(100*angle_ratio), 10); CGContextAddRect(context, r1); CGContextStrokePath(context); // 四角描画 _Image_View.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); angle_disp[time_dif-1] = ceilf(angle); self.R10.text =[NSString stringWithFormat:@"%d",angle_disp[time_dif-1]];} break; case 2: case 3: ..........
回答2件
あなたの回答
tips
プレビュー