2014-02-27 78 views
0

我正在開發UIPICKERVIEW的一個例子,我想禁用或關閉陰影效果滾動效果,但沒能做到it.do你有任何想法?如何在ios中的UIPICKER VIEW中禁用滾動效果和陰影效果?

的源代碼: pickerViewController.h文件

#import <UIKit/UIKit.h> 

@interface pickerViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate> 
{ 
    UIPickerView *languageSelect; 
    NSMutableArray *pickerData; 
} 
@property (nonatomic, retain) UIPickerView *languageSelect; 
@property (nonatomic, retain) NSArray *pickerData; 
@end 

pickerViewController.m文件

#import "pickerViewController.h" 

@interface pickerViewController() 

@end 

@implementation pickerViewController 
@synthesize languageSelect, pickerData; 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    pickerData= [[NSMutableArray alloc]  initWithObjects:@"English",@"Spanish",@"French",@"Greek", 
      @"Japaneese",@"Korean",@"Hindi",@"English",@"Spanish",@"French",@"Greek", 
      @"Japaneese",@"Korean",@"Hindi", nil]; 

    languageSelect = [[UIPickerView alloc] initWithFrame:CGRectMake(10, 50, 300, 1000)]; 
    languageSelect.showsSelectionIndicator = YES; 
    languageSelect.hidden = NO; 
    languageSelect.delegate = self; 
    [self.view addSubview:languageSelect]; 

} 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; { 
    return 1; 
} 

    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component; 
{ 
    return [pickerData count]; 
} 
    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { 

UILabel *pickerLabel = (UILabel *)view; 

    NSString* labelText = [NSString stringWithFormat:@"%@",[pickerData objectAtIndex:row]]; 

if (pickerLabel == nil) { 
    CGSize size = [labelText sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(250, 216) lineBreakMode:NSLineBreakByCharWrapping]; 
    CGRect frame = CGRectMake(0.0, 0.0, 250, size.height + 25); 
    pickerLabel = [[UILabel alloc] initWithFrame:frame]; 
    [pickerLabel setTextAlignment:NSTextAlignmentLeft]; 
    [pickerLabel setBackgroundColor:[UIColor clearColor]]; 
    [pickerLabel setFont:[UIFont boldSystemFontOfSize:15]]; 
    [pickerLabel setLineBreakMode:NSLineBreakByWordWrapping]; 

     // trying to mess with the UIView of the row itself... to no avail 
    //CGRect rowFrame = view.frame; 
    //NSLog(@"%f",rowFrame.size.height); 
    //rowFrame.size.height = size.height + 25; 
    //view.frame = rowFrame; 
} 

[pickerLabel setText:[pickerData objectAtIndex:row]]; 

//NSLog(@"%f",[pickerView rowSizeForComponent:component].height); 

return pickerLabel; 
} 

-(NSString*) pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [pickerData objectAtIndex:row]; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component; 
{ 

} 

輸出:

enter image description here

我想要做這樣的事情.. 。!

enter image description here

+0

如果你想達到這樣的你已經開發自己的自定義控制,這是默認一個 – Yohan

+0

好的,你可以建議我如何devlop自定義控件? –

+0

s你甚至可以使用UItableView來顯示選項是這樣的 – Yohan

回答

2

這是很多定製工作。如果你想達到這樣的效果,你可能更願意使用UITableView。儘管如此,你仍然需要付出相當大的努力。

0

在圖中你可以看到UIPickerView的結構。 http://i.stack.imgur.com/QFAKV.png

enter image description here

也許去除一些圖層可幫助您 http://i.stack.imgur.com/C2xDO.png

enter image description here

+0

-1獲取代碼截圖而不是代碼塊 – Tim

+0

@Tim截圖有什麼問題? – Aznix

+0

,因爲任何讀者都無法選擇或複製您的任何代碼。 SO的markdown子集中有一個代碼塊標籤是有原因的。 此外,文本數據的最佳表示方式是將其顯示爲文本,而不是圖像。 – Tim