首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISegmentedControl错误的dividerImage

UISegmentedControl错误的dividerImage
EN

Stack Overflow用户
提问于 2013-03-27 22:50:34
回答 3查看 689关注 0票数 0

我在我的应用程序中使用下面的code.Initially自定义所有分段的控件,我将选定的分段设置为索引2。

当我在IOS5上测试这个应用程序时,我意识到分段控制的初始设置在选中和未选中状态之间有一个bug.The分隔图像,而不是将right.Due设置为如下所示。

如果我通过点击segmentedcontrol行为来更改选定的段,normal.It非常weird.What等,我应该做什么来防止这种奇怪的行为?

代码语言:javascript
复制
     UISegmentedControl *localSegmentedControl = [[UISegmentedControl alloc] init];

     if ([localSegmentedControl respondsToSelector:@selector(setBackgroundImage:forState:barMetrics:)]) {

    UIImage *segmentUnselectedSelectedDivider       = [UIImage imageNamed:@"segmentedControlSeperatorNS.png"];
    UIImage *segmentSelectedUnselectedDivider       = [UIImage imageNamed:@"segmentedControlSeperatorSN.png"];
    UIImage *segmentUnselectedUnselectedDivider     = [UIImage imageNamed:@"segmentedControlSeperatorNN.png"];

    UIImage *segmentUnselected = [[UIImage imageNamed:@"barButtonPlain.png"] stretchableImageWithLeftCapWidth:7 topCapHeight:0];
    UIImage *segmentSelected = [[UIImage imageNamed:@"doneButton.png"] stretchableImageWithLeftCapWidth:7 topCapHeight:0];


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


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

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

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


}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-28 18:17:03

在尝试了所有相关方法后,在Customizing UISegmentedControl in iOS 5中进行了解释

我发现这个问题与分割line.The教程的宽度有关,在http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5中,假设分割图像的宽度大于2px (在视网膜中)。我把它们做得恰好2px宽,问题就解决了。

票数 1
EN

Stack Overflow用户

发布于 2013-03-27 23:02:23

我认为这是一个已知的bug。这是与这里相同的变通办法,可能对你有用。

Customizing UISegmentedControl in iOS 5

票数 0
EN

Stack Overflow用户

发布于 2013-03-28 00:08:55

当我使用段控制时,我对同样的问题感到非常疲惫。我解决了那段代码

代码语言:javascript
复制
  UIImage *segmentSelected =
[[UIImage imageNamed:@"ikisiSecildiKirmizi.png"]
 resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 5, 15)];
UIImage *segmentUnselected =
[[UIImage imageNamed:@"ikisiSecilmediGri.png"]
 resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 5, 15)];
UIImage *segmentSelectedUnselected =
[[UIImage imageNamed:@"solSecili.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 5, 15)];
UIImage *segUnselectedSelected =
[[UIImage imageNamed:@"sagSecili.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 5, 15)];

UIImage *segmentUnselectedUnselected =
[[UIImage imageNamed:@"ikisideSecilmemis.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 5, 15)];

[fiyatSaat setBackgroundImage:segmentUnselected
                     forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[fiyatSaat setBackgroundImage:segmentSelected
                     forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

[fiyatSaat setDividerImage:segmentUnselectedUnselected
       forLeftSegmentState:UIControlStateNormal
         rightSegmentState:UIControlStateNormal
                barMetrics:UIBarMetricsDefault];

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

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

NSDictionary *attributes = [NSDictionary dictionaryWithObject:[UIColor blackColor]
                                                       forKey:UITextAttributeTextColor];
[fiyatSaat setTitleTextAttributes:attributes
                         forState:UIControlStateNormal];
NSDictionary *attributes2 = [NSDictionary dictionaryWithObject:[UIColor whiteColor]
                                                       forKey:UITextAttributeTextColor];
[fiyatSaat setTitleTextAttributes:attributes2
                         forState:UIControlStateHighlighted];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15661898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档