【问题标题】:combining UISegmentedControl and UIBarButtonItem in navigation controller to customized barbuttonitem background image将导航控制器中的 UISegmentedControl 和 UIBarButtonItem 结合到自定义的 barbuttonitem 背景图像
【发布时间】:2010-11-29 07:34:50
【问题描述】:

我有一个以编程方式在导航控制器上方制作的 barbuttonitem。当我按下那个条形按钮时,我想显示它的标题和背景也是突出显示的效果。 这是我使用的代码:

NSArray *segmentText = [segmentTextMutable copy];
UIImage *image = [[[UIImage alloc] init] autorelease];
image = [UIImage imageNamed:@"bunga.jpg"];

_docSegmentedControl = [[UISegmentedControl alloc] initWithItems:segmentText];
_docSegmentedControl.selectedSegmentIndex = 0;
_docSegmentedControl.autoresizingMask =  UIViewAutoresizingFlexibleHeight;
_docSegmentedControl.segmentedControlStyle = UISegmentedControlStyleBezeled;
[_docSegmentedControl addTarget:self action:@selector(docSegmentAction:) forControlEvents:UIControlEventValueChanged];
[_docSegmentedControl setBackgroundColor:[UIColor colorWithPatternImage:image]];

UIView *barBackground = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
UIButton *barButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *buttonImage = [UIImage imageNamed:@"button.png"];
UIImage *buttonPressedImage = [UIImage imageNamed:@"buttonPressed.png"];
[[barButton titleLabel] setFont:[UIFont boldSystemFontOfSize:12.0]];
[barButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[barButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
[barButton setTitleShadowColor:[UIColor colorWithWhite:1.0 alpha:0.7] forState:UIControlStateNormal];
[barButton setTitleShadowColor:[UIColor clearColor] forState:UIControlStateHighlighted];
[[barButton titleLabel] setShadowOffset:CGSizeMake(0.0, 1.0)];

 CGRect buttonFrame = CGRectMake(0, 0, 110.0, 40);
 //buttonFrame.size.width = 110.0;
 //buttonFrame.size.height = buttonFrame.size.height;
[barButton setFrame:buttonFrame];
[barButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[barButton setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted];
[barButton setTitle:docSegmentFileName forState:UIControlStateNormal];
[barButton addTarget:self action:@selector(docSegmentAction:) forControlEvents:UIControlEventTouchUpInside];
[barBackground addSubview:barButton];

UIBarButtonItem *segmentItem = [[UIBarButtonItem alloc] initWithCustomView:_docSegmentedControl];
self.navItem.leftBarButtonItem = segmentItem;
self.navItem.leftBarButtonItem.title = @"";
[self.navItem.leftBarButtonItem setCustomView:barBackground];

很遗憾,这不起作用。它没有显示 UIBarButtonItem,而是简单地消失了(它变得 100% 透明)。当我省略 setCustomView 方法时, UIBarButtonItem 会出现,但不是自定义的。我该如何解决这个问题?

谢谢...

【问题讨论】:

    标签: iphone image background uibarbuttonitem uisegmentedcontrol


    【解决方案1】:

    当您调用[self.navItem.leftBarButtonItem setCustomView:barBackground]; 时,您正在从 UIBarButtonItem 中删除 UISegmentedControl。您需要修改 UISegmentedControl 而不是 UIBarButtonItem。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多