IOS 6 UISegmentedControl

IOS 6 UISegmentedControl,ios,xcode,Ios,Xcode,我使用以下代码创建UISegment: //segment controll NSString *key2 = [allKeys2 objectAtIndex:i]; NSString *obj2 = [DictionaryHomework objectForKey:key2]; int val; val = [obj2 intValue]; //segment con

我使用以下代码创建UISegment:

//segment controll

            NSString *key2 = [allKeys2 objectAtIndex:i];

            NSString *obj2 = [DictionaryHomework objectForKey:key2];

            int val;
            val = [obj2 intValue];

            //segment controll

            NSArray *itemArray2 = [NSArray arrayWithObjects: @"very easy", @"easy", @"ok", @"hard", @"challenging", nil];
            UISegmentedControl *segmentedControl2 = [[UISegmentedControl alloc] initWithItems:itemArray2];
            segmentedControl2.frame = CGRectMake(480, -60, 130, 350);
            segmentedControl2.segmentedControlStyle = UISegmentedControlStyleBar;
            segmentedControl2.selectedSegmentIndex = val - 1;
            [segmentedControl2 addTarget:self action:@selector(segmentedControlHomework:) forControlEvents:UIControlEventValueChanged];

            segmentedControl2.transform =
            CGAffineTransformRotate(segmentedControl2.transform, degreesToRadians(90));

            NSArray *arr = [segmentedControl2 subviews];
            for (int i = 0; i < [arr count]; i++) {
                UIView *v = (UIView*) [arr objectAtIndex:i];
                NSArray *subarr = [v subviews];
                for (int j = 0; j < [subarr count]; j++) {
                    if ([[subarr objectAtIndex:j] isKindOfClass:[UILabel class]]) {
                        UILabel *l = (UILabel*) [subarr objectAtIndex:j];
                        l.transform = CGAffineTransformMakeRotation(- M_PI / 2.0); //do the reverse of what Ben did
                    }
                }
            }

            [image1 addSubview:segmentedControl2];

            segmentedControl2.tag = i;

            [segmentArray addObject: segmentedControl2];

            //segment control
//段控制
NSString*key2=[allKeys2 objectAtIndex:i];
NSString*obj2=[DictionaryHomework对象forkey:key2];
int-val;
val=[obj2 intValue];
//分段控制
NSArray*itemArray2=[NSArray arrayWithObjects:@“非常简单”,“简单”,“正常”,“困难”,“挑战”,无];
UISegmentedControl*segmentedControl2=[[UISegmentedControl alloc]initWithItems:itemArray2];
segmentedControl2.frame=CGRectMake(480,-60130350);
segmentedControl2.segmentedControlStyle=UISegmentedControlStyleBar;
segmentedControl2.selectedSegmentIndex=val-1;
[segmentedControl2添加目标:自我操作:@selector(segmentedControlHomework:)for ControlEvents:UIControlEventValueChanged];
分段控制2.0转换=
CGAffineTransformRotate(segmentedControl2.transform,度弧度(90));
NSArray*arr=[segmentedControl2子视图];
对于(int i=0;i<[arr count];i++){
UIView*v=(UIView*)[arr objectAtIndex:i];
NSArray*子视图=[v子视图];
对于(int j=0;j<[subar count];j++){
if([[subar objectAtIndex:j]是kindof类:[UILabel类]]){
UILabel*l=(UILabel*)[subar objectAtIndex:j];
l、 transform=CGAffineTransformMakeRotation(-M_PI/2.0);//执行与Ben相反的操作
}
}
}
[图像1添加子视图:分段控件2];
分段控制2.tag=i;
[segmentArray添加对象:segmentedControl2];
//段控制

在ios5上,控件水平加载标题,而在ios6中,控件垂直加载标题。为什么会这样?iOS6是否发生了变化?

您正在摆弄
UISegmentedControl
的内部机制。虽然您在技术上没有使用私有API,但仍然可以访问未公开文档的
UIKit
部分

在iOS 6中这种行为可能已经改变的一个原因可能是分段控件现在在
layoutSubviews
或其他地方懒洋洋地构建其子视图。它甚至可能根本不使用子视图。但我只是在猜测。然而,改变框架中未记录的内部内容是苹果的选择


您的代码不应该在配送应用程序中使用。如果您想执行内置分段控件无法执行的类似操作(垂直分段?),请自行构建。

您正在摆弄
UISegmentedControl
的内部机制。虽然您在技术上没有使用私有API,但仍然可以访问未公开文档的
UIKit
部分

在iOS 6中这种行为可能已经改变的一个原因可能是分段控件现在在
layoutSubviews
或其他地方懒洋洋地构建其子视图。它甚至可能根本不使用子视图。但我只是在猜测。然而,改变框架中未记录的内部内容是苹果的选择


您的代码不应该在配送应用程序中使用。如果您想执行内置分段控件无法执行的类似操作(垂直分段?),请自行构建。

做什么?使用垂直单元格构建分段控件?您可以使用表视图。做什么?使用垂直单元格构建分段控件?您可以使用表视图。