Tag: setneedsdisplay

触发drawRectbutton来重绘视图

我有一个子视图的VC。 在subview level我有一个button。 我希望button导致视图被更新。 IBAction代码在VC中。 它目前所做的只是切换一个BOOL值。 返回子视图drawRect:方法是testingBOOL并相应地更改视图的代码。 我的观察是,当按下button时,IBAction代码运行,切换BOOL ,但drawRect:方法不被调用。 我尝试手动调用drawRect(不好的做法,并没有工作)。 我试图调用setNeedsDisplay,但也没有工作(不知道如何引用子视图,这是创build程序)。 build议欢迎。 IBAction代码是微不足道的,但包括如下: – (IBAction)rotateWindowButtonWasPressed:(id)sender { // just flip the boolean here. Need to make the code change in drawRect: in top2View.m if ([myGlobals gWinVertical]) [myGlobals setGWinVertical:NO]; else [myGlobals setGWinVertical:YES]; // Hoping this would force a redraw, but bounds have to change…:( //_top2ViewOutlet.contentMode = UIViewContentModeRedraw; […]

用drawRect设置UIView backgroundColor:

我想设置一个自定义的UIView类的背景颜色。 该类还在drawRect:方法中执行石英绘图。 由于背景颜色的改变不会发生,直到下一次重绘的视图,我调用setNeedsDisplay之前更改UIView的backgroundColor属性。 我已经设置了一个UIActivityIndicatorViewanimation,而视图正在重绘。 self.backgroundColor = theColor; [indicator startAnimating]; [self performSelectorInBackground:@selector(setNeedsDisplay) withObject:nil]; 指示器在setNeedsDisplay结束时停止。 每次我需要调用这个时, theColor都会改变。 假设我有一个耗时的setNeedsDisplay进程。 我想设置背景,并保持指标animation。 目前,改变backgroundColor调用setNeedsDisplay但不改变backgroundColor,直到performSelectorInBackground方法运行! 因此,我的应用程序挂起,没有任何指标是永远不会animation。 我如何处理这个订购问题? 谢谢。 编辑:我的意思是我的drawrect:可能是费时的。

iOS:如何获得后台线程来重绘主线程上的视图

我的应用程序将查询数据库50次,然后通过将正确的UIImageView添加到另一个UIImageView来做出相应的反应,然后我希望应用程序在每个循环中立即显示。 唉,经过很多晚,我没能把它运行起来。 应用程序不会立即显示UIImageView。 话虽如此,当我放大或缩小中期循环时,UIImageViews将出现! 我肯定错过了什么… 到目前为止,除了最后一部分[UIScrollView performSelector …. 请提前帮助,谢谢。 UIScrollView *firstView; UIImageView *secondView; UIImageView *thirdView; NSOperationQueue *queue; NSInvocationOperation *operation; – (void)viewDidAppear:(BOOL)animated { queue = [NSOperationQueue new]; operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getData) object:nil]; [queue addOperation:operation]; } – (void) getData { for (i=0 ; i < 50 ; i++) { //All the codes to facilitate XML […]

iOS:如何在popup其子UIViewController后“刷新”UIViewController?

在我的应用程序我使用UINavigationController。 我有一个“父母”UIViewController和一个“孩子”UIViewController在堆栈上运行。 用户可以对孩子进行一些设定,这些设定稍后会影响父母。 我使用NSUserDefaults来保存和检索数据,并根据NSLog似乎工作正常。 我不清楚的是,一旦我从孩子回来,我该如何“刷新”数据。 让我更具体:在孩子有一个“后退”button,做popViewControllerAnimated,然后我们回到父母。 我想重新运行我在viewDidLoad中的所有方法,所以父视图字段与我从NSUserDefaults数据中获得的更改一起设置。 哪里在父方法我应该告诉视图“刷新”? 我如何做这个刷新行动? 我应该再次调用viewDidLoad? 我读了一些名为setNeedsDisplay的东西,如果这是我应该使用的东西,语法是什么(是“[self。view setNeedsDisplay]”还是别的)? 任何人都可以指导和阐述?

SetNeedsDisplay无法正常工作

我看到了许多与这个问题有关的线索,但没有解决我的情况(我认为)。 我的情况应该很简单,我有我的控制器中的自定义UIView ,从我的控制器,我使用[ self.myView setNeedsDisplay ],它完美的作品。 我有问题,当我试图从UIView本身内部调用这个…我有一个通知从另一个类发送,它正在接受我的观点(这工程)与它传递的信息,我更新这个视图的内部属性,比我打电话[self setNeedsDisplay ]希望我的屏幕更新与新的状态,但没有任何事情发生,我在drawRec方法内使用drawRec ,并没有被调用在这个时候,它只是当我的控制器类调用setNeedsDisplay时被调用,当发生这种情况时,应该发生的更新之前显示在屏幕上…我不知道为什么它不更新之前… 这里是一些代码: 我的控制器要求更新:(工作正常!) – (void)addNodeToNetwork:(DTINode *)node { [self.myNetwork addNodeInTheNetwork:node]; self.gridView.nodesToDraw = [self.myNetwork.nodesInNetwork copy]; CGRect tempRec = CGRectMake(node.nodePosition.x, node.nodePosition.y node.nodePosition.x, node.nodePosition.y); NSValue *rectObj = [NSValue valueWithCGRect:tempRec]; //transforma o cgrect num objeto [self.gridView.fatherNodes setValue:rectObj forKey:node.nodeName]; [self.gridView setNeedsDisplay]; } 我的通知方法试图更新我的绘图:(不工作!) – (void) receiveTestNotification:(NSNotification *) notification { NSDictionary *userInfo = […]

重新加载/刷新子视图 – setNeedsDisplay不工作

我有麻烦setNeedsDisplay。 我有一个UIView有很多子UIViews,在Inteface Builder中创build。 我也有一个IBActionbutton。 在这个IBAction我想重新绘制/重新加载所有的UIViews(或所有UIElements,如UILabel,UIWebView等..) 我正在做这个,这不适合我,不知道为什么..: //redraw the UIViews [self.view_card_0 setNeedsDisplay]; [self.view_card_1 setNeedsDisplay]; [self.view_card_stapel setNeedsDisplay]; //other UI Elements [self.webView_0 setNeedsDisplay]; [self.webView_1 setNeedsDisplay]; [self.webView_stapel setNeedsDisplay]; [self.lblCardTitle_0 setNeedsDisplay]; [self.lblCardTitle_1 setNeedsDisplay]; [self.lblCardTitle_stapel setNeedsDisplay]; [self.img_card_0 setNeedsDisplay]; [self.img_card_1 setNeedsDisplay]; [self.img_card_stapel setNeedsDisplay]; 怎么做重绘/重新加载/刷新所有UIElements / UIViews和子视图? 编辑1: 我如何加载视图: detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:[NSBundle mainBundle]]; detailviewcontroller没有viewcontroller,只是uiviews,在这里hierarchie: 的UIView – UIViewContainer — UIView0 — […]

有UIView drawRect发生在后台线程中

我想有一个UIView子类实现类似于setNeedsDisplay的方法,除了重画(即,通常会通过drawRect:调用)将在后台线程中发生,而不是在当前的更新周期结束。 它可能被称为setNeedsAsynchronousDisplay 。 或者现有的setNeedsDisplay可能会被劫持,并且不会在循环结束时导致重绘,或者任何其他操作,只要它允许重绘不会发生在主线程阻塞屏幕上,更新交互直到它完成。 在重绘之前,视图可以继续使用其当前的绘制表示。 这些线路是否合理可行? 谢谢!