2013-04-27 37 views
0

那裏。 我自定義UISegmentedControl自定義背景圖像。 代碼是這樣的:定製UISegmentedControl與resizableImageWithCapInsets

UIImage *segmentSelected = [[UIImage imageNamed:@"segcontrol_sel.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]; 
UIImage *segmentUnselected = [[UIImage imageNamed:@"segcontrol_uns.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]; 
UIImage *segmentSelectedUnselected = [[UIImage imageNamed:@"segcontrol_sel-uns.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; 
UIImage *segUnselectedSelected = [[UIImage imageNamed:@"segcontrol_uns-sel.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; 
UIImage *segmentUnselectedUnselected = [[UIImage imageNamed:@"segcontrol_uns-uns.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; 

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
              forState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
              forState:UIControlStateSelected 
             barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected 
          forLeftSegmentState:UIControlStateNormal 
           rightSegmentState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected 
          forLeftSegmentState:UIControlStateSelected 
           rightSegmentState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setDividerImage:segUnselectedSelected 
          forLeftSegmentState:UIControlStateNormal 
           rightSegmentState:UIControlStateSelected 
             barMetrics:UIBarMetricsDefault]; 

但結果是不是它應該是。我不太清楚該方法的用法:resizableImageWithCapInsets。 圖像已附加。

它應該是這樣的: should be

,但實際上它是這樣的: screen shot

我客我用錯了UIEdgeInset值。 背景圖片的寬度爲22;高度:30 ,分隔圖像的寬度爲:11;身高:30 有何建議? 非常感謝。

回答

2

試試這個

HMSSegmentControl

只使用這兩個文件及其選擇和取消選擇圖像

HMSegmentedControl.h

HMSegmentedControl.m

.h文件中

#import "HMSegmentedControl.h" 
    HMSegmentedControl *segmentedControl; 

.m文件爲viewDidLoad中

segmentedControl = [[HMSegmentedControl alloc] initWithSectionImages:@[[UIImage imageNamed:@"1"], [UIImage imageNamed:@"2"], [UIImage imageNamed:@"3"]] sectionSelectedImages:@[[UIImage imageNamed:@"1-selected"], [UIImage imageNamed:@"2-selected"], [UIImage imageNamed:@"3-selected"]]]; // it create size as per your segment total image 
     [segmentedControl setSelectionIndicatorHeight:4.0f]; 
     [segmentedControl setFrame:CGRectMake(0, 45, 320, 45)]; 
     [segmentedControl setSegmentEdgeInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
     [segmentedControl addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged]; 
     [segmentedControl setBackgroundColor:[UIColor blueColor]]; 
     [segmentedControl setSelectionLocation:HMSegmentedControlSelectionLocationDown]; 
     [segmentedControl setSelectionStyle:HMSegmentedControlSelectionStyleTextWidthStrip]; 
     [self.view addSubview:segmentedControl]; 



    - (void)segmentedControlChangedValue:(HMSegmentedControl *)segmentedControl1 { 
     if (segmentedControl1.selectedSegmentIndex==0) { 
      } 
     else if (segmentedControl1.selectedSegmentIndex==1) { 
      } 
     else if(segmentedControl1.selectedSegmentIndex==2) { 
      } 
     } 
+0

謝謝,但我仍然想知道爲什麼我的代碼不起作用。 – 2013-04-27 07:23:13

+0

我有同樣的問題,我使用這個http://stackoverflow.com/questions/10562300/customizing-left-right-uisegmentedcontrol-buttons但沒有成功,比使用HMSegmentedControl。 – 2013-04-27 07:39:57

0

代碼,我認爲你應該使用更高質量的圖像。

我來賓我用了錯誤的UIEdgeInset值。背景圖片的寬度爲22;高度:30,分隔圖像寬度:11;身高:30任何建議?提前致謝。

你應該嘗試60 * 60像素爲您的圖像。

相關問題