2012-10-01 109 views
1

我有一個簡單的段控制,其中我把圖像爲高亮和正常狀態。
我設置了段控制的框架,以便它完美地適合圖像。它在iOS 6中工作得很好。它顯示出意外的行爲,它將段控制高度更改爲所需的高度,但寬度保持不變。圖像比分段小,因此需要調整圖像大小或分段控制屬性。段控制寬度iOS 6

這裏是下面的代碼:

- (void)initTitleControl:(id)delegate { 
    UIImage *leftImage; 
    UIImage *rightImage; 
    UIImage *leftImageText = [GBImageManager drawTextOnImage:leftImage color:UIColorFromRGB(0xffffff) text:@"List"]; 
    UIImage *rightImageText = [GBImageManager drawTextOnImage:rightImage color:UIColorFromRGB(0x076aac) text:@"Map"]; 
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:leftImageText, rightImageText, nil]]; 

    [segmentControl setSelectedSegmentIndex:0]; 
    [segmentControl setTintColor:UIColorFromRGB(0x076aac)]; 
    [segmentControl setSegmentedControlStyle:UISegmentedControlStyleBar]; 
    [segmentControl setMomentary:YES]; 
    CGRect frame = CGRectMake(0, 0, 105, 32); 
    [segmentControl setFrame:frame];  
    [segmentControl addTarget:self action:@selector(onSegmentedChanged:) forControlEvents:UIControlEventValueChanged]; 

    self.navigationItem.titleView = segmentControl; 
    [delegate setSegmentedControl:segmentControl]; 
} 

如果在以前的IOS版本能正常工作,我不明白,爲什麼這種行爲的iOS 6.哪些其他控件在iOS 6中意外行爲?

回答

1

我解決了這個問題,使用更廣泛的形象也。但是,一個整潔的方法,我發現是:

float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
if (version >= 6.0) { 
[[UISegmentedControl appearance] setWidth:leftImage.size.width -1.5 forSegmentAtIndex:0]; 
[[UISegmentedControl appearance] setWidth:rightImage.size.width -1.5 forSegmentAtIndex:1];} 

我做了一個版本檢查中的iOS 4.3模擬器,這是不允許的,因爲這種方法可以在iOS 5中或以後使用。 因爲我沒有使用任何分隔圖像,所以我在圖像大小上做了-1.5的寬度,並且它顯示了兩段之間的差距。我還是想知道如果任何人有另一種方法或回答爲什麼它在iOS的6

0

行爲不同在.h文件:

IBOutlet UISegmentedControl *segmentCont; 

.m文件中的段陣列。

[email protected][@"OneDay",@"20-20",@"Test"]; 

segmentCont=[[UISegmentedControl alloc] initWithItems:noArray]; 
    segmentCont.segmentedControlStyle = UISegmentedControlStyleBar; 

    segmentCont.selectedSegmentIndex = 0; 
    lbl1.text=[noArray objectAtIndex:0]; 
    [segmentCont addTarget:self action:@selector(Select_Value:) forControlEvents:UIControlEventValueChanged]; 

// Segment Control 
-(void)Select_Value:(id)sender{ 

    UISegmentedControl *segmentedControl2 = (UISegmentedControl *)sender; 
    lbl1.text=[segmentedControl2 titleForSegmentAtIndex: [segmentedControl2 selectedSegmentIndex]];// intValue]; 

}