#iphone #ios #ios4
#iPhone #iOS #ios4
Вопрос:
я создаю приложение, в котором пользователь может выбирать изображение из horizontal scrollview, и если выбрано изображение, он также должен иметь возможность перетаскивать все выбранные изображения?
я могу выбирать по одному изображению за раз и могу перетаскивать одно изображение, но я хочу, чтобы несколько изображений выбирались одно за другим, должна ли быть возможность выбирать их одно за другим?
Это мой код:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
imagesName = [[NSArray alloc]initWithObjects:@"hat3.png",@"hat4-1.png",@"t-shirt.png",@"t-shirt.png",
@"Untitled-2.png",@"logo1.jpg",@"logo2.jpg",@"logo3.jpg",nil];
images = [[NSMutableArray alloc]init];
}
return self;
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setMultipleTouchEnabled:YES];
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"t-shirt.png"]];
imageView.center = self.view.center;
[self.view addSubview:imageView];
scrollView.delegate = self;
scrollView.scrollEnabled = YES;
int scrollWidth = 120;
scrollView.contentSize = CGSizeMake(scrollWidth,80);
int xOffset = 0;
imageView.image = [UIImage imageNamed:[imagesName objectAtIndex:0]];
//for(int index=0; index < [imagesName count]; index )
for (int index=0; index < [imagesName count]; index )
{
UIImageView *img = [[UIImageView alloc] init];
//img.bounds = CGRectMake(10, 10, 50, 50);a
img.bounds = CGRectMake(0, 0, 20, 20);
//img.frame = CGRectMake(5 xOffset, 0, 160, 110);
img.frame = CGRectMake(0 xOffset, 0, 60, 61);
//img.frame = CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>);
NSLog(@"image: %@",[imagesName objectAtIndex:index]);
img.image = [UIImage imageNamed:[imagesName objectAtIndex:index]];
[images insertObject:img atIndex:index];
scrollView.contentSize = CGSizeMake(scrollWidth xOffset,110);
[scrollView addSubview:[images objectAtIndex:index]];
xOffset = 170;
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch * touch = [[event allTouches] anyObject];
for(int index=0;index<[images count];index )
{
UIImageView *imgView = [images objectAtIndex:index];
NSLog(@"x=%f,y=%f,width =%f,height=%f",imgView.frame.origin.x,imgView.frame.origin.y,imgView.frame.size.width,imgView.frame.size.height);
NSLog(@"x= %f,y=%f",[touch locationInView:self.view].x,[touch locationInView:self.view].y) ;
if(CGRectContainsPoint([imgView frame], [touch locationInView:scrollView]))
{
[self ShowDetailView:imgView];
break;
}
}
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesMoved:touches withEvent:event];
NSArray *allTouches = [touches allObjects];
int count = [allTouches count];
if (count == 1) {
if (CGRectContainsPoint([imageView frame], [[allTouches objectAtIndex:0] locationInView:self.view])) {
imageView.center = [[allTouches objectAtIndex:0] locationInView:self.view];
return;
}
}
}
пожалуйста, помогите
предложить мне какой-нибудь учебник
Комментарии:
1. при вставке кода сюда, пожалуйста, отформатируйте его правильно. кто-то другой должен прочитать ваш код и ответить вам. Пожалуйста, будьте вежливы с этим…
2. сэр, я новичок на этом сайте… я действительно не имею ни малейшего представления об этом …. прошу прощения за это
Ответ №1:
Я думаю, хорошей идеей было бы связать все выбранные изображения с NSMutableArray, который поддерживает ссылку на них — добавляйте / удаляйте их по мере их выбора / отмены выбора соответственно. Затем в вашем «touchesMoved» вместо обновления только UIImageView, получающего касание, выполните итерацию по всем выбранным изображениям и измените их центры. Надеюсь, это поможет!
Комментарии:
1. можете ли вы, пожалуйста, предоставить мне несколько руководств, связанных с этим материалом…………. это будет полезно для меня