Tag: uibarbuttonitem

UIToolbarresize导致景观中奇怪的UIBarButtonItem大小

当我创build并添加UIToolBar和UIBarButton项目时,如何让工具栏和项目在两个方向上正确显示。 这是我迄今为止: self.toolbar = [[[UIToolbar alloc]initWithFrame:CGRectMake(0, 372, 320, 44)]autorelease]; self.toolbar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; self.deleteButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteButtonClicked)] autorelease]; self.deleteButton.style = UIBarButtonItemStylePlain; UIBarButtonItem *flexibleSpace = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease]; self.shareButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(shareButtonClicked)] autorelease]; self.shareButton.style = UIBarButtonItemStylePlain; self.navigationItem.leftBarButtonItem = backItem; NSArray *toolbarItems = [NSArray arrayWithObjects:self.shareButton,flexibleSpace,self.deleteButton,nil]; […]

禁用的uibarbuttonitem的文本颜色总是正常状态的颜色

我在我的代码中写道 [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor lightGrayColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} forState:UIControlStateDisabled]; [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} forState:UIControlStateNormal]; 但文字颜色始终是蓝色,尽pipe禁用了baritem。 我在xcode 5和ios7编程

调整UITextField的宽度以在横向上填充工具栏

在UIToolbar ,我已经添加了一个UITextField到中间的栏(它被作为一个UIBarButtonItem添加)与旁边的另一个UIBarButtonItem (动作button)。 我在左边和右边添加了灵活的空格键button项目。 它在纵向上看起来不错,但是当我旋转到横向时,它将它们居中并看起来不错,但是我需要拉伸文本字段来填充宽度,并将最后一个button清除到右侧 – 完全像在Messages中一样iPhone和iPad。 我认为自动布局会做的伎俩,但苹果声明,你不能创buildUIBarButtonItem的约束。 实际上,当我select任何栏button或文本字段时,将不允许创build任何约束。 你能让我知道如何做到这一点? 谢谢! 编辑:我已经尝试了一些固定/灵活的空间的其他组合。 当我不添加任何时,文本字段和分享button被推到左边: 如果相反,我做固定的空间,它看起来是完全相同的如上0宽度,或者如果我设置一个宽度,那么它显然会推它们。 最右边的最后一个空间没有任何影响 – 它不是固定在最右边,所以它离开了屏幕。 我试了左边的一个固定的空间,右边是一个固定的空间,中间的空间固定(或者没有中间的空间),看起来像上面的截图。 然后我改变了中间的一个灵活,结果是这样的: 如果我把第一个变为灵活的,中间没有(或者如果我添加一个固定的),然后在右侧移动,它会移到右侧: 如果第一个是灵活的,中间是灵活的,右边是固定的,这是它的外观: 在所有情况下,文本字段的宽度与最初在故事板中设置的静态值保持相同。 我认为问题是,当您通过拖动框架来设置宽度时,没有蓝色的指引来捕捉,所以它将始终保持相同的宽度。 我错过任何空间组合吗? 如果我不能在界面生成器中实现所需的行为,那么如何在代码中完成此操作?

iOS lazy var UIBarButtonItem目标问题

当使用lazy var初始化时,我无意识地发现了这个UIBarButtonItem目标问题。 class ViewController: UIViewController { lazy var barButtonItem1 = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(action1)) lazy var barButtonItem2: UIBarButtonItem = { let barButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(action2)) return barButtonItem } override func viewDidLoad() { super.viewDidLoad() print(barButtonItem1.target, barButtonItem2.target) } } 打印结果显示barButtonItem1.target为零,而barButtonItem2.target为自己,这看起来很疯狂! 当我使用barButtonItem1的lazy var写入时,我得到了这个问题,然后我发现barButtonItem1的动作永远不会被调用,最后问题是barButtonItem1.target为零。 我不知道为什么会发生这种情况,但是我很确定这是一个错误。 有没有人知道这件事? 如果你能解释一下,我会非常感激。

使用initWithCustomView创build的UIBarButtonItem不会触发操作

我正在更新一些旧的代码,并在工具栏中留出更多空间,我将button从testing转换为图像。 loadView中新旧代码的一个例子是: // New code, doesn't work. UIButton *toggleKeyboardBtn = [UIButton buttonWithType:UIButtonTypeCustom]; toggleKeyboardBtn.bounds = CGRectMake( 0, 0, showKeyboardImage.size.width, showKeyboardImage.size.height ); [toggleKeyboardBtn setImage:showKeyboardImage forState:UIControlStateNormal]; UIBarButtonItem *toggleKeyboardItem = [[UIBarButtonItem alloc] initWithCustomView:toggleKeyboardBtn]; [toggleKeyboardItem setTarget:self]; [toggleKeyboardItem setAction:@selector(toggleKeyboard:)]; // Original code, works jut fine. UIBarButtonItem *setupItem = [[[UIBarButtonItem alloc] initWithTitle:@"Setup" style:UIBarButtonItemStyleBordered target:[UIApplication sharedApplication].delegate action:@selector(showSetupView:)] autorelease]; 我的新代码是从UIBarButtonItem无法设置操作 ,我相当肯定,我没有犯错,因为我的文本button工作得很好。 showSetupView()在我的AppController.m文件中,当button被按下时,安装屏幕出现并消失。 toggleKeyboard(),OTOH与loadView()例程位于同一个文件中,目前由以下代码组成: //- […]

当更改UIBarButtonItem标题时,转换是生涩/闪烁

我有一个UIViewController子类。 我给view控制器一个rightBarButtonItem在viewDidLoad是这样的: self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty" style:UIBarButtonItemStylePlain target:nil action:nil]; 当用户按下视图中的另一个button时, UIBarButtonItem的标题/文本将UIBarButtonItem更改: self.navigationItem.rightBarButtonItem.title = @"Mellansvår"; 它工作正常,但标题改变时,看起来不太好。 文本跳了一下。 我已经在运行时改变了UILabel文本,而当我改变他们的文本是不是看起来像这样,但我不知道如何添加一个UILabel到navigationItem 。 我无法在界面生成器中执行此操作,因为导航栏来自UINavigationController 。 有没有办法改变标题更顺利?

iOS 7:如何设置UIBarButtonItem backButtonImage为UIControlStateHighlighted?

我正在尝试在正常和突出显示的状态下为后退button设置背景图像。 – (void)configureBackButtonInNavigationItem:(UINavigationItem *)item { UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:nil action:NULL]; [backBarButtonItem setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]} forState:UIControlStateNormal]; [backBarButtonItem setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor orangeColor]} forState:UIControlStateHighlighted]; // white arrow image UIImage *normalImage = [[[UIImage imageNamed:@"btn_normal"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] resizableImageWithCapInsets:UIEdgeInsetsMake(0.f, 17.f, 0.f, 0.f)]; // orange arrow image UIImage *pressedImage = [[[UIImage imageNamed:@"btn_on_press"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] resizableImageWithCapInsets:UIEdgeInsetsMake(0.f, 17.f, 0.f, 0.f)]; [backBarButtonItem […]

无法在UIBarButtonItem上设置操作

所以我添加了一堆自定义UIBarButtonItems到一个UIToolbar,他们都加载得很好,看起来不错,我可以看到他们在我的UIToolbar。 唯一的问题是,我不能对他们执行任何操作。 在我的viewDidLoad中,我设置了一切。 这里是我的.h和.m文件: .h文件: #import <UIKit/UIKit.h> #import <MobileCoreServices/MobileCoreServices.h> #import <QuartzCore/QuartzCore.h> @interface PhotoEditViewController : UIViewController <UIPopoverControllerDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIGestureRecognizerDelegate> { IBOutlet UIImageView *imageView; } – (IBAction)cancelEdit:(id)sender; – (IBAction)savePhoto:(id)sender; – (IBAction)chooseColor:(id)sender; @property (retain) IBOutlet UIToolbar *editBar; @property (retain) UIImageView *imageView; @property (retain) UIImage *tempImage; – (void) setupStache; @end .m文件:(viewDidLoad) #pragma mark – View lifecycle – (void)viewDidLoad […]

摆脱UINavigationBar右侧的空间

所以,这是我想要完成的: 这是一个带有UIBarButtonItem的UINavigationBar ,它使用自定义的UIButton进行初始化。 基本上是这样的: UIButton *favoriteButton = [UIButton buttonWithType:UIButtonTypeCustom]; [favoriteButton addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; favoriteButton.frame = CGRectMake(0.0f, 0.0f, 44.0f, 44.0f); UIImage *backgroundImage = [[UIImage imageNamed:@"favorite-button-background-orange"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 2, 0, 0)]; [favoriteButton setBackgroundImage:backgroundImage forState:UIControlStateNormal]; UIBarButtonItem *favoriteButtonItem = [[UIBarButtonItem alloc] initWithCustomView:favoriteButton]; 问题是我似乎无法摆脱UINavigationBar右侧的那个讨厌的小边框。 我试图设置一个自定义TitleView ,如“ 如何删除UIBarButtonItem旁边的填充 ”中所述,但这并没有改变一件事情。 我也尝试添加另一个UIBarButtonItem与消极的宽度(正如我读的一些博客文章中所build议的),但是也没有帮助。 UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; negativeSpacer.width = -5.0f; self.navigationItem.rightBarButtonItems […]

如何检测何时使用MKUserTrackingBarButtonItem

我目前正试图find一种方法来检测何时使用MKUserTrackingBarButtonItem ,而不是处理mapView:didUpdateUserLocation:委托方法。 我试图设置MKUserTrackingBarButtonItem来调用我的function(检查此线程 ),但诅咒它删除更新位置的行动,我不想。 我没有find任何委托方法触发:/ 感谢您的任何想法。