36 iphone cocoa-touch objective-c uisegmentedcontrol uikit
我该如何定制UISegmentedControl
?
我有2个图像,1表示段处于活动状态时应显示,而另一个图像处于非活动状态时应显示.我可以覆盖样式或其他东西,所以我有UISegmentedControl
自己的图像作为活动/非活动背景吗?
Jon*_*Jon 33
我不得不添加这个额外的代码,除了为"开"和"关"位置有2个不同的状态:
- (void)viewDidLoad
{
[super viewDidLoad];
// Set set segControl background to transparent
CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
CGContextFillRect(context, rect);
UIImage *transparentImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.segControl setBackgroundImage:transparentImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.segControl setDividerImage:transparentImage forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}
Run Code Online (Sandbox Code Playgroud)
编辑:因为这是一个宣传,一个更清洁的解决方案是使用[UIImage新]而不是创建透明图像,因此:
[self.segControl setDividerImage:[UIImage new] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.segControl setBackgroundImage:[UIImage new] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
Boc*_*ica 14
您可以使用iOS开发人员库中描述的方法:
向下滚动到"自定义外观"部分.有几种方法可以为多个按钮状态,按钮分割器图像等设置背景图像.
这些方法仅适用于iOS5及更高版本.
@property tintColor
– backgroundImageForState:barMetrics:
– setBackgroundImage:forState:barMetrics:
– contentPositionAdjustmentForSegmentType:barMetrics:
– setContentPositionAdjustment:forSegmentType:barMetrics:
– dividerImageForLeftSegmentState:rightSegmentState:barMetrics:
– setDividerImage:forLeftSegmentState:rightSegmentState:barMetrics:
– titleTextAttributesForState:
– setTitleTextAttributes:forState:
Run Code Online (Sandbox Code Playgroud)
是的,您需要为分段栏的每个部分提供2张图像(打开和关闭).(4段...... 8张图片.)但它可以让你设置16个选项!(所有只在GUI中消耗1行.)
我得到了一切工作除了...你如何隐藏原始段条形图?
无法将alpha设置为0.(它也会隐藏您的图像.)
无法将"tintClear"设置为"clear".(不知道为什么它会变成黑色和白色.)
无法将其设置为"隐藏"......根本不会有任何作用.
无法将"背景"设置为"清除".(背景不是分段栏图形.)
我写了一些有用的东西,因为@rpetrich正在解释而不放在一个数组中,在我看来这是最容易解决的问题.希望有人觉得这很有用
.H
IBOutlet UIButton *index0;
IBOutlet UIButton *index1;
IBOutlet UIButton *index2;
IBOutlet UIImageView *segMentControl;
-(IBAction)segmentSwitch:(UIButton *) buttonIndexPressed;
Run Code Online (Sandbox Code Playgroud)
.M
-(IBAction)segmentSwitch:(UIButton *) buttonIndexPressed
{
if (buttonIpressed == index0)
{
[segmentControl setImage:[UIImage imageNamed:@"Seg1Sel.png"]];
NSLog(@"index 0 pushed");
index0.enabled = NO;
index1.enabled = YES;
index2.enabled = YES;
}
else if (buttonIpressed == index1)
{
[segmentControl setImage:[UIImage imageNamed:@"Seg2Sel.png"]];
NSLog(@"index 1 pushed");
index0.enabled = YES;
index1.enabled = NO;
index2.enabled = YES;
}
else if (buttonIpressed == index2)
{
[segmentControl setImage:[UIImage imageNamed:@"Seg3Sel.png"]];
NSLog(@"index 2 pushed");
index0.enabled = YES;
index1.enabled = YES;
index2.enabled = NO;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62924 次 |
最近记录: |