我想制作一个包含图像和文本的自定义 UIBarButtonItem,如下所示:
我尝试继承 UIBarButtonItem 并覆盖此方法:
- (UIView *)customView
{
if (!self.storedView) {
UIView *temp = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 120, 44)];
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:self.image];
tempImageView.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);
UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(44, 0, 100, 44)];
tempLabel.text = @"text";
[temp addSubview:tempImageView];
[temp addSubview:tempLabel];
self.storedView = temp;
}
return self.storedView;
}
我是这样使用它的:
UIBarButtonItem *left = [[LeftItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStylePlain target:self action:@selector(settingsPressed)];
left.title = @"Settings";
left.image = [UIImage imageNamed:@"settings.png"];
self.navigationItem.leftBarButtonItem = left;
但是使用这个我只得到图像,而不是标签。我做错了什么?
最佳答案
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button addTarget:target action:@selector(buttonAction:)forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 53, 31)];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(3, 5, 50, 20)];
[label setFont:[UIFont fontWithName:@"Arial-BoldMT" size:13]];
[label setText:title];
label.textAlignment = UITextAlignmentCenter;
[label setTextColor:[UIColor whiteColor]];
[label setBackgroundColor:[UIColor clearColor]];
[button addSubview:label];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = barButton;
https://stackoverflow.com/questions/18844681/
相关文章:
iphone - NSNumber 和 NSInteger 有什么区别?
ios - 按字典中键的值对字典的 NSArray 进行排序
objective-c - 具有多个目标的 Objective C 到 Swift 头文件
objective-c - 将 Xcode 组创建为文件系统文件夹的工作流程
ios - '无效更新 : invalid number of rows in section 0
c++ - 我可以在同一个 Xcode 项目中拥有 Swift、Objective-C、C 和 C+
ios - MKMapView:自定义 View 代替 Annotation Pin
objective-c - 将自定义 subview (在 xib 中创建)添加到 View Con