Tag: objective c

dispatch_async(dispatch_get_main_queue(),^ {…}); 等到做完了?

我在我的应用程序中有一个场景,我想在一个方法中做一些耗时的任务,包括一些数据处理以及UI更新。 我的方法看起来像这样, – (void)doCalculationsAndUpdateUIs { // DATA PROCESSING 1 // UI UPDATE 1 // DATA PROCESSING 2 // UI UPDATE 2 // DATA PROCESSING 3 // UI UPDATE 3 } 由于费时,我想在后台线程上进行数据处理, dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{ 但是,由于数据处理和UI更新都采用相同的方法,所以我只想在主线程中移动UI更新, dispatch_async(dispatch_get_main_queue(), ^{ 最后我的方法看起来像这样, – (void)doCalculationsAndUpdateUIs { // DATA PROCESSING 1 dispatch_async(dispatch_get_main_queue(), ^{ // UI UPDATE 1 }); /* I expect […]

在所有其他视图上添加UIView,包括StatusBar

我想创build一个视图(UIControl),它阻止所有input,并显示UIActivityIndi​​catorView同时对用户进行身份validation。 UIActionSheet和U​​IAlertView都pipe理添加一个黑色的半透明视图顶部的所有其他视图阻止input,我想要做类似的。 我已经尝试将我的视图添加到[[UIApplication sharedApplication]窗口]数组中的顶层UIWindow,并且,如果可见,它会将其放在UIKeyboard上方,但不会将其放在StatusBar上(这是有道理的)。 我的下一个尝试是扩展UIAlertView,删除所有的子视图,并设置其layer.contents =零,然后添加ActivityIndi​​cator作为子视图。 这很好,但我似乎无法杀死UIAlertView的默认有弹性转换时,你把它称为“显示”。 有没有人有最好的方式来解决这个问题,让我完全控制的任何指针? 呵呵,我知道阻塞input并不是很好,但是我确实确保这个input很短时间,而且它的好处是让用户明白他们必须完成的动作正在处理中。

iPhone – dequeueReusableCellWithIdentifier用法

我正在从事一个iPhone应用程序,它有一个相当大的UITableView与从networking采集的数据,所以我试图优化其创build和使用。 我发现dequeueReusableCellWithIdentifier是相当有用的,但在看到许多使用这个源代码后,我想知道如果我使用这个函数是好的。 以下是人们通常做的事情: UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"]; // Add elements to the cell return cell; 我这样做是这样的: // The cell row NSString identifier = [NSString stringWithFormat:@"Cell %d", indexPath.row]; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell != nil) return cell; cell = [[UITableViewCell alloc] initWithFrame:CGRectZero […]

在iOS中出现键盘时向上移动UIView

我有一个UIView,它不在UIScrollView里面。 我想在键盘出现时向上移动视图。 在我尝试使用这个解决scheme之前: 当键盘出现时,如何使UITextField向上移动? 。 这工作正常。 但是,在将数据插入到文本框之后,它将我带到另一个视图,当我回到此页面时,它只是跳跃,而我看不到我的文本字段。 有没有更好的解决scheme,对于这个问题? 提前致谢!

派遣队列:如何判断他们是否在运行以及如何阻止他们

我只是玩GCD,我已经写了一个玩具CoinFlipper应用程序。 这是翻转硬币的方法: – (void)flipCoins:(NSUInteger)nFlips{ // Create the queues for work dispatch_queue_t mainQueue = dispatch_get_main_queue(); dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL); // Split the number of flips into whole chunks of kChunkSize and the remainder. NSUInteger numberOfWholeChunks = nFlips / kChunkSize; NSUInteger numberOfRemainingFlips = nFlips – numberOfWholeChunks * kChunkSize; if (numberOfWholeChunks > 0) { for (NSUInteger index […]

在10.9上以编程方式启用对辅助设备的访问

我想在10.9上以编程方式启用对辅助设备的访问。 在10.8及更低版本中,我使用以下Applescript来访问辅助设备: tell application "System Events" if UI elements enabled is false then set UI elements enabled to true end if end tell 随着10.9,苹果已将可访问性选项移到系统偏好设置➞安全和隐私➞隐私➞可访问性。 与以前版本的OS X(对所有应用程序使用通用checkbox)不同,10.9中的新function允许用户单独select哪些应用程序可以控制系统执行各种脚本function。 苹果没有提供任何API给开发人员以编程方式启用应用程序的可访问性。 因此,当应用程序使用可访问性API时,Mac OS 10.9将提示最终用户权限对话框以启用辅助function。 此外,用户必须在启用辅助function后重新启动应用程序。 我们可以使用Applescript或任何其他API以编程方式启用对辅助设备的访问吗? 任何帮助解决这个问题将不胜感激。

根据文本量更改UITableViewCell高度

我需要能够调整我的UITableView中的单个单元格的高度,以适应其详细标签中的文本的数量。 我已经玩了下面,但它不适合我: 如何在没有自定义单元格的情况下在UITableViewCell中包装文本 希望你能帮忙,谢谢。 编辑: 尝试的代码: UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; cell.textLabel.numberOfLines = 0; cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0]; } 和 – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellText = @"Go get some text for your cell."; UIFont *cellFont = […]

CALayer:只在一边添加边框

我可以通过这种方式向CALayer添加边框: [webView.layer setBorderColor: [[UIColor colorWithRed:0.6 green:0.7 blue:0.2 alpha:1] CGColor]]; [webView.layer setBorderWidth: 2.75]; 但是只能在一边添加边框吗? 我只需要在底部的边界。 或者我可以用其他属性来达到这个目的,例如框架,范围,面具……? 谢谢你的帮助! b控制-V UIWebView *webView = [[UIWebView alloc] init]; CALayer *webViewLayer = webView.layer; // now you can do a lot of stuff like borders: [webViewLayer setBorderColor: [[UIColor greenColor] CGColor]]; [webViewLayer setBorderWidth: 2.75]; 看一下CALayer文档: https : //developer.apple.com/documentation/quartzcore/calayer 看看这里: http : //iosdevelopertips.com/cocoa/add-round-corners-and-border-to-uiwebview.html

UILabel中文本的像素宽度

我需要画一个UILabel通过。 因此,我分类UILabel和实施它如下: @implementation UIStrikedLabel – (void)drawTextInRect:(CGRect)rect{ [super drawTextInRect:rect]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextFillRect(context,CGRectMake(0,rect.size.height/2,rect.size.width,1)); } @end 会发生什么事情是,UILabel是通过与整个标签一样长的一条线穿过,但文本可以更短。 有没有一种方法来确定像素的文本的长度,这样的行可以适当地绘制? 我也打开任何其他解决scheme,如果知道:) 最好的,Erik

在iPhone上用于SQLite的最佳Cocoa / Objective-C包装库

我正在开发iPhone,并正在寻找一个好的Cocoa / Objective-C库来处理SQLite。 我不想使用标准的程序SQLite C API。 我在Objective-C部分的sqlite.org上看到了一些选项,但是我不确定在库APIdevise,稳定性和function方面哪个最好。 我想用一些正在积极开发的东西,希望能够在一段时间内出现。 任何人都有基于使用经验的build议? 谢谢