我想用自定义图像创建一个UIBarButtonItem,但我不想要iPhone添加的边框,因为我的图像有一个特殊的边框.
它与后退按钮相同,但是前进按钮.
这个应用程序是针对inHouse项目的,所以我不在乎Apple是拒绝或批准它还是喜欢它:-)
如果我使用UIBarButtonItem的initWithCustomView:v属性,我可以这样做:
UIImage *image = [UIImage imageNamed:@"right.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage: [image stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateNormal];
[button setBackgroundImage: [[UIImage imageNamed: @"right_clicked.png"] stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateHighlighted];
button.frame= CGRectMake(0.0, 0.0, image.size.width, image.size.height);
[button addTarget:self action:@selector(AcceptData) forControlEvents:UIControlEventTouchUpInside];
UIView *v=[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height) ];
[v addSubview:button];
UIBarButtonItem *forward = [[UIBarButtonItem alloc] initWithCustomView:v];
self.navigationItem.rightBarButtonItem= forward;
[v release];
[image release];
Run Code Online (Sandbox Code Playgroud)
这有效,但如果我必须在10个视图中重复此过程,这不是DRY.
我想我必须继承,但是什么?
谢谢,
问候,
嗨,我需要在导航栏中以编程方式设置右侧的按钮,这样如果我按下按钮,我将执行一些操作.我以编程方式创建了导航栏;
navBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0,0,320,44) ];
Run Code Online (Sandbox Code Playgroud)
同样,我需要在此导航栏的右侧添加按钮.为此我用过,
1.
UIView* container = [[UIView alloc] init];
// create a button and add it to the container
UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 130, 44.01)];
[container addSubview:button];
[button release];
// add another button
button = [[UIButton alloc] initWithFrame:CGRectMake(160, 0, 50, 44.01)];
[container addSubview:button];
[button release];
// now create a Bar button item
UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithCustomView:container];
// set the nav bar's right button item
self.navigationItem.rightBarButtonItem = item;
[item release];
Run Code Online (Sandbox Code Playgroud)
2. …
我将Round Rect按钮拖动到右侧Bar Button项的位置,并将图像设置为Round Rect Button.除警告"导航项目中不支持普通样式"外,一切正常.即使我选择条形按钮项的样式为"有边框",警告仍然存在.Xcode 4.2有什么问题?提前致谢!
PS.我使用圆形矩形按钮定制了许多条形按钮项目,有时Xcode 4.2仅显示条形按钮项目上的一个警告,有时显示所有条形按钮项目的警告.
我之前使用的是iOS 6.1,但现在我已经转移到iOS 7.除了其他问题之外,我观察到在我的导航栏中,左侧栏按钮项的左侧空间和右侧按钮栏项的右侧空白区域相当IOS 7比iOS 6更多.
我需要知道有没有办法可以减少导航栏中左,右栏按钮项的空格?
提前致谢.
我有一个iOS 7应用程序,我在这里设置一个自定义后退按钮,如下所示:
UIImage *backButtonImage = [UIImage imageNamed:@"back-button"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backButtonImage forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, 20, 20);
[backButton addTarget:self
action:@selector(popViewController)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
viewController.navigationItem.leftBarButtonItem = backBarButtonItem;
Run Code Online (Sandbox Code Playgroud)
但是这会禁用iOS 7"从左向右滑动"手势以导航到之前的控制器.有谁知道如何设置自定义按钮并仍然启用此手势?
编辑:我试图设置viewController.navigationItem.backBarButtonItem,但这似乎并没有显示我的自定义图像.
uinavigationcontroller uibarbuttonitem uiviewanimation ios ios7
如何设置Swift中自定义UIBarButtonItem的操作?
以下代码成功将按钮放在导航栏中:
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:nil)
self.navigationItem.rightBarButtonItem = b
Run Code Online (Sandbox Code Playgroud)
现在,我想func sayHello() { println("Hello") }在触摸按钮时打电话.到目前为止我的努力:
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:sayHello:)
// also with `sayHello` `sayHello()`, and `sayHello():`
Run Code Online (Sandbox Code Playgroud)
和..
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:@selector(sayHello:))
// also with `sayHello` `sayHello()`, and `sayHello():`
Run Code Online (Sandbox Code Playgroud)
和..
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:@selector(self.sayHello:))
// also with `self.sayHello` `self.sayHello()`, and `self.sayHello():`
Run Code Online (Sandbox Code Playgroud)
请注意,它sayHello()出现在intellisense中,但不起作用.
谢谢你的帮助.
编辑:对于后代,以下工作: …
以下代码通过iOS 6运行:
UIButton *myButton = nil;
myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.bounds = CGRectMake(0,0,44,30);
// setup myButton's images, etc.
UIBarButtonItem *item = nil;
item = [[UIBarButtonItem alloc] initWithCustomView:customButton];
Run Code Online (Sandbox Code Playgroud)
这是按钮应该如何对齐:

但是,在iOS 7上,按钮似乎从右侧或左侧偏移了太多像素:

如何才能使我的自定义条形按钮项目正确对齐?
uinavigationbar uibutton uibarbuttonitem uinavigationitem ios7
我UIBarButtonItem使用Xcode Storyboards 创建了一个popover (所以没有代码),如下所示:

提出popover工作得很好.但是,当我点击它使它出现时,我无法让popover 消失UIBarButtonItem.
按下按钮(第一次)时会出现弹出窗口.当再次按下该按钮(第二次)时,它上面会出现相同的弹出窗口,所以现在我有两个弹出窗口(如果我继续按下按钮,则会有更多弹出窗口).根据iOS人机界面指南,我需要在第一次点击时显示弹出窗口并在第二次点击时消失:
确保一次只能在屏幕上看到一个弹出窗口.您不应同时显示多个弹出窗口(或设计为外观和行为的自定义视图).特别是,您应该避免同时显示级联或层次结构的弹出窗口,其中一个弹出窗口从另一个弹出窗口出现.
当用户UIBarButtonItem再次点击时,如何解除popover ?
objective-c uibarbuttonitem uipopovercontroller ios uistoryboard
当我按下它时UIViewController,它在新的后退按钮中有一些标题UIViewController,如果标题有很多文本,它在iPhone 4s看起来不太好所以我想删除它.
如果我在prepareForSegue函数中添加一些代码,那将是一个麻烦.
有没有更好的方法实现这一目标
如何在UINavigationBar中更改UIBarButtonItem的位置?我希望我的按钮比正常位置高5px.
uibarbuttonitem ×10
ios ×7
iphone ×5
ios7 ×3
objective-c ×3
swift ×2
action ×1
uibutton ×1
uistoryboard ×1
xcode ×1