Они не так сложны, как кажутся.Вы просто нуждаетесь в графических активах, а затем различаете статические и анимационные графические ресурсы.
Анимация может быть выполнена довольно легко с использованием базовой анимации.Допустим, у вас есть первый гаджет (хотя Quartz2D будет гораздо более производительным - но это будет хорошее начало для его создания с использованием простых UIViews).
Первый гаджет имеет только иглу, которая анимирует (или вращает)на основе заданного значения).Остальная часть изображения может быть простым UIImageView.
Сделайте что-то вроде:
needleView.layer.anchorPoint = BOTTOM_RIGHT_POINT;//to not rotate at center but bottom right or whatever
...
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
CGAffineTransform transform = CGAffineTransformMakeRotation(angle_in_radians);
needleView.transform = transform;
[UIView commitAnimations];
Это будет вращать иглу.
Аналогично для двух игл второго калибра.Для горизонтальных столбцов сделайте то же самое, но с помощью FRAME, чтобы установить размер столбцов относительно min_value и max_value.