-(UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view
{
//NSLog(@"%d",component);
// NSLog(@"tag: %d",pickerView.tag);
if([pickerView isEqual:picker1])
{
NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+1];
NSArray *array1 = [self valueForKey:arrayName];
UIImageView *imageView = [array1 objectAtIndex:row];
if ([pickerView selectedRowInComponent:component] == row) {
imageView.frame = CGRectMake(60,60,40,80);//set bigger frame
} else {
//imageView.frame = CGRectMake(30,30,20,60);//set normal frame
}
return imageView;
}
}
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 80.0;
}
我正在实现自定义uipicker以实现第一个以下图像。我用uipicker选择了三张图片。但是,所有这些都显示在下面第二张图片的屏幕上。我想只在中间显示占据更大的尺寸而不是其他图像如图所示。
答案 0 :(得分:1)
更新:根据您的评论,您需要将中间行设置得更大。
将viewForRow方法修改为,
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view
{
//NSLog(@"%d",component);
NSLog(@"tag: %d",pickerView.tag);
if(pickerView.tag==1)
{ NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+1];
NSArray *array1 = [self valueForKey:arrayName];
UIImageView *imageView = [array1 objectAtIndex:row];
if ([pickerView selectedRowInComponent:component] == row) {
imageView.frame = CGRectMake(..);//set bigger frame
} else {
imageView.frame = CGRectMake(..);//set normal frame
}
return imageView;
}
实施pickerView:rowHeightForComponent:
方法并为行设置合适的高度。
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component {
要隐藏选择指标,请设置showsSelectionIndicator
UIPickerView
属性。有关详细信息check apple doc.
根据您的评论,
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
[pickerView reloadComponent:component];
}
答案 1 :(得分:0)
任何人都需要帮助!这是解决方案。所有积分都转到@ACB !!!
-(UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view
{
//NSLog(@"%d",component);
// NSLog(@"tag: %d",pickerView.tag);
if(pickerView.tag==1)
{
NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+1];
NSArray *array1 = [self valueForKey:arrayName];
UIImageView *imageView = [array1 objectAtIndex:row];
if ([pickerView selectedRowInComponent:component] == row) {
imageView.frame = CGRectMake(60,60,40,80);//set bigger frame
} else {
imageView.frame = CGRectMake(30,30,20,60);//set normal frame
}
return imageView;
//NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+1];
//NSArray *array1 = [self valueForKey:arrayName];
//return [array1 objectAtIndex:row];
}
else if([pickerView isEqual:picker2])
{
NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+5];
NSArray *array1 = [self valueForKey:arrayName];
UIImageView *imageView = [array1 objectAtIndex:row];
if ([pickerView selectedRowInComponent:component] == row) {
imageView.frame = CGRectMake(60,60,40,80);//set bigger frame
} else {
imageView.frame = CGRectMake(30,30,20,60);//set normal frame
}
return imageView;
/* NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+5];
NSArray *array2 = [self valueForKey:arrayName];
return [array2 objectAtIndex:row];*/
}
else
{
NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+9];
NSArray *array1 = [self valueForKey:arrayName];
UIImageView *imageView = [array1 objectAtIndex:row];
if ([pickerView selectedRowInComponent:component] == row) {
imageView.frame = CGRectMake(60,60,40,80);//set bigger frame
} else {
imageView.frame = CGRectMake(30,30,20,60);//set normal frame
}
return imageView;
/* NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+9];
NSArray *array3 = [self valueForKey:arrayName];
return [array3 objectAtIndex:row];*/
}
}
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 120.0;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
[pickerView reloadComponent:component];
}