Это линейно или логарифмически? Я спрашиваю, потому что я беру исследование, направленное на мобильные приложения, и мы используем iPhone Sam's Teach Yourself (2-е издание, также, буоооооо!). В час 8, если он у кого-то есть, мы создаем анимацию и используем ползунок, чтобы определить, сколько времени потребуется анимации для прохождения цикла. Затем мы должны сделать опцию ручного ввода количества петель в секунду. У меня есть оба варианта, и ползунок изменился на то, что было введено вручную, но единственная проблема, которую я вижу, заключается в том, что когда я ввожу значение вручную, оно будет циклически проходить через правильное количество циклов и перемещать ползунок в правильное позиционирование, но всякий раз, когда я устанавливаю скорость анимации с помощью ползунка, кажется, что значения оцениваются логарифмически, а не линейно. У меня есть диапазон от 0,05 до 19,95 для ползунка, поэтому он начинается с 0,05 и не получает значение «1» до тех пор, пока не пройдут 4/5 пути, затем это от 1-20 остальной части путь, и у вас в значительной степени нет точности на том, какое число вы получите.
Спасибо за ваше время, если вам нужно что-то перефразировать, дайте мне знать!
* Редакция
Хорошо, поехали.
ImageHopViewController.h:
#import <UIKit/UIKit.h>
@interface ImageHopViewController : UIViewController {
IBOutlet UIImageView *images;
IBOutlet UILabel *hps;
IBOutlet UISlider *slider;
IBOutlet UIButton *toggle;
IBOutlet UITextField *manual;
IBOutlet UIButton *go;
}
@property(retain, nonatomic) UIImageView *images;
@property(retain, nonatomic) UILabel *hps;
@property(retain, nonatomic) UISlider *slider;
@property(retain, nonatomic) UIButton *toggle;
@property(retain, nonatomic) UITextField *manual;
@property(retain, nonatomic) UIButton *go;
-(IBAction)toggleAnimation:(id)sender;
-(IBAction)setSpeed:(id)sender;
-(IBAction)manualEntry:(id)sender;
@end
ImageHopViewController.m:
#import "ImageHopViewController.h"
#import "ImageHopViewController.h"
@implementation ImageHopViewController
@synthesize images;
@synthesize hps;
@synthesize slider;
@synthesize toggle;
@synthesize manual;
@synthesize go;
-(IBAction)toggleAnimation:(id)sender{
if(images.isAnimating) {
[images stopAnimating];
[toggle setTitle:@"Begin!" forState:UIControlStateNormal];
}else{
[images startAnimating];
[toggle setTitle:@"Desist!" forState:UIControlStateNormal];
}
}
-(IBAction)setSpeed:(id)sender {
NSString *hopRate;
images.animationDuration=20-slider.value;
[images startAnimating];
[toggle setTitle:@"Desist!" forState:UIControlStateNormal];
hopRate=[[NSString alloc] initWithFormat:@"%1.2f", 1/(20-slider.value)];
hps.text=hopRate;
[hopRate release];
}
-(IBAction)manualEntry:(id)sender{
NSString *hopRate;
NSString *manualValue;
float value;
manualValue=manual.text;
value=[manualValue floatValue];
slider.value=value;
images.animationDuration=1/slider.value;
[images startAnimating];
[toggle setTitle:@"Desist!" forState:UIControlStateNormal];
hopRate=[[NSString alloc] initWithFormat:@"%1.2f", 1/(20-slider.value)];
hps.text=manualValue;
[hopRate release];
}
- (void)dealloc
{
[images dealloc];
[hps dealloc];
[slider dealloc];
[toggle dealloc];
[manual dealloc];
[go dealloc];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
NSArray *animation;
animation=[[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"frame-1.png"],
[UIImage imageNamed:@"frame-2.png"],
[UIImage imageNamed:@"frame-3.png"],
[UIImage imageNamed:@"frame-4.png"],
[UIImage imageNamed:@"frame-5.png"],
[UIImage imageNamed:@"frame-6.png"],
[UIImage imageNamed:@"frame-7.png"],
[UIImage imageNamed:@"frame-8.png"],
[UIImage imageNamed:@"frame-9.png"],
[UIImage imageNamed:@"frame-10.png"],
[UIImage imageNamed:@"frame-11.png"],
[UIImage imageNamed:@"frame-12.png"],
[UIImage imageNamed:@"frame-13.png"],
[UIImage imageNamed:@"frame-14.png"],
[UIImage imageNamed:@"frame-15.png"],
[UIImage imageNamed:@"frame-16.png"],
[UIImage imageNamed:@"frame-17.png"],
[UIImage imageNamed:@"frame-18.png"],
[UIImage imageNamed:@"frame-19.png"],
[UIImage imageNamed:@"frame-20.png"],
nil
];
images.animationImages=animation;
images.animationDuration=10;
[animation release];
[super viewDidLoad];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}
@end
В файле NIB
есть только UIImageView
(изображения), UISlider
(ползунок) для скорости анимации, UILabel
(hps) для отображения скачков в секунду, UIButton
(переключатель) для переключения анимации, UITextField
(вручную) для ручного управления. запись и еще один UIButton
(перейти), чтобы начать анимацию с введенным текстом, преобразованным в float
.
Поскольку у меня есть (id) для получаемого типа объекта, повлияет ли это на него в любом случае? Я все еще новичок в этом, как мне исправить это?
animationDuration
внутриsetSpeed
нужно было изменить наimages.animationDuration=1/slider.value;
, а поплавок, вставленный вhopRate
вsetSpeed
, нужно было изменить только наslider.value
вместо1/(20-slider.value)];
- person JustLikeThat   schedule 30.09.2011