gpt4 book ai didi

IOS 6 UISegmentedControl

转载 作者:行者123 更新时间:2023-11-28 19:15:12 26 4
gpt4 key购买 nike

我使用这段代码来创建一个 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

在 ios5 上,控件以水平方式加载标题,而在 ios6 中以垂直方式加载。为什么是这样? iOS6 有变化吗?

最佳答案

您正在摆弄 UISegmentedControl 的内部机制。虽然您技术上没有使用私有(private) API,但您仍在访问未公开记录的 UIKit 部分。

在 iOS 6 中行为可能发生变化的一个原因可能是分段控件现在在 layoutSubviews 或其他地方懒惰地构建其 subview 。它甚至可能根本不使用 subview 。但我只是在这里猜测。但是,更改框架的未记录内部结构是 Apple 的选择。

您的代码绝不能用于运输应用程序。如果您想执行内置分段控件无法执行的类似操作(垂直分段?),请自行构建。

关于IOS 6 UISegmentedControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12566637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com