Tag: uiview

iOS:使用sizeWithFont的UILabeldynamic高度:constrainedToSize:lineBreakMode:不工作

我试图给我的UILabeldynamic高度,以便我的其他标签的布局在横向和纵向上看起来都是正确的。 在纵向,我的文字包装到第二行,在横向上它不。 所以,当使用sizeWithFont:constrainedToSize:lineBreakMode:我得到了同样的高度旋转双方,当我认为这将是一个更大的数字,当文本是2行。 如何获得我的UILabel的高度,当它有两行文字或更多(肖像),并得到新的高度是一个线,在横向? 我想我不理解如何获得dynamic高度工作… UILabel *itemTitle = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, top, screen.size.width – 20, 200.0f)]; itemTitle.text = self.newsAsset.title; itemTitle.adjustsFontSizeToFitWidth = NO; itemTitle.autoresizingMask = UIViewAutoresizingFlexibleWidth; itemTitle.font = [UIFont boldSystemFontOfSize:18.0]; itemTitle.textColor = [UIColor blackColor]; itemTitle.shadowColor = [UIColor whiteColor]; itemTitle.shadowOffset = CGSizeMake(0, 1); itemTitle.backgroundColor = [UIColor blueColor]; itemTitle.lineBreakMode = UILineBreakModeWordWrap; itemTitle.numberOfLines = 0; [itemTitle sizeToFit]; // Set […]

在iOS单一视图应用程序中,self.view.bounds设置的最早时间是什么时候?

我正在尝试添加一个覆盖整个屏幕的UITableView对象 UITableView *tabelView = [[UITableView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:tabelView]; 但是我意识到,即使将物理iPad 2旋转到横向模式, self.view.bounds也是在viewDidLoad和viewWillAppear {{0, 0}, {768, 1004}} 。 只有在viewDidAppear它终于{{0, 0}, {1024, 748}} self.view.bounds被设置为{{0, 0}, {1024, 748}}的最早时间是什么时候? 如果viewDidAppear是一个,那么我必须在那里创buildUITableView ,如果“启动图像”是一个静态的横向空白表,那么当viewDidAppear被调用时,屏幕将会闪烁白色屏幕,然后添加和看见表,所以看到一个白色的屏幕闪光。 那么self.view.bounds设置为{{0, 0}, {1024, 748}}的最早时间是什么时候? 看起来好像在viewDidAppear之前需要稍微做一点,这样就可以绘制空白表格(用灰色线条),并将其显示出来并无缝地显示来覆盖启动图像。 如果表格是使用self.view.bounds在viewDidLoad或viewWillAppear创build的,那么表格最终会self.view.bounds 768点宽度,并用于纵向模式。 更新:我只是试图添加启动图像,由于某种原因,即使UITableView添加在viewDidAppear ,“白屏的闪光”没有发生…我不知道为什么,但以前如果我使用CALayer和位图显示的内容,并没有使用任何视图或drawRect ,然后发生闪光…顺便说一下,我发现最早的一个是viewWillLayoutSubviews ,然后在viewDidLayoutSubviews ,这两个发生在viewDidAppear之前,和都显示self.view.bounds为{{0, 0}, {1024, 748}} 更新2:如果视图复杂且费时,该怎么办? 为了testing,我添加了一个usleep(100000); 在tableView:cellForRowAtIndexPath为每个单元睡0.1秒,并且“闪光”确实发生了…但细胞和表应该是重量轻和快速,但如果有其他types的视图是更多的时间耗费多less? 如果我将UITableView创build移动到viewWillLayoutSubviews ,那么显示内容仍然很慢,但至less没有“flash”。 然而,稍后当我旋转设备,它实际上再次调用viewWillLayoutSubviews并添加另一个表到主视图(具有正确的屏幕大小),所以viewWillLayoutSubviews将需要删除任何旧的表视图,如果有的话,或者只是调整旧一个而不是添加一个新的。

调整UIView以适应CGPath

我有一个UIView子类,用户可以在其中添加一个随机的CGPath。 CGPath是通过处理UIPanGestures添加的。 我想将UIView调整到包含CGPath的最小矩形。 在我的UIView子类中,我重载了sizeThatFits来返回最小尺寸,如下所示: – (CGSize) sizeThatFits:(CGSize)size { CGRect box = CGPathGetBoundingBox(sigPath); return box.size; } 这可以按预期工作,并且UIView被调整为返回的值,但是CGPath也是按比例“resize”,导致与用户最初绘制的path不同。 作为一个例子,这是用户绘制的path的视图: 这是resize后的path: 我怎样才能调整我的UIView,而不是“调整”的path?

从一个UIViewControllerpipe理多个UIViews

我对视图控制器感到困惑,并会喜欢一个直接的例子。 这是序言: 我有一个匹配.xib的UIViewController。 默认情况下,IB在“文档”窗口中给我一个单独的视图。 我可以通过告诉我的UIWindow addSubview:controller.view和bringSubviewToFront:controller.view 以下是问题: 我应该添加另一个视图到在IB的ViewController? 还是有一个更好的,程序化的方式? 我如何告诉ViewController在视图之间切换? 从ViewController向下,代码看起来像做什么? 我正在尝试的东西,但只是弄得一团糟,所以我想我会停下来问问…

drawRect和addSubview:自定义绘图会影响哪些视图?

如果我有一个实现了drawRect和controller方法的UIView的自定义子类,使用addSubview在这个自定义视图中创build视图层次结构,那么drawRect如何与这些子视图交互? 它是否重新创build整个子类的视图层次结构,并删除任何现有的子视图? 还是忽略子视图,只重绘一个特定的视图/子视图? 以编程方式添加和删除drawRect中的子视图是否可以接受?

如何在UIView中优先考虑手势识别器和触摸

从阅读UIGestureRecognizer类参考意味着API将为您处理触摸和手势控制的优先级,确保您的touchesBegan和相关方法不会在视图上调用,除非手势识别器首先失败: 窗口在将触摸事件传送到附加到手势识别器的命中testing视图之前将其传送给手势识别器。 通常,如果手势识别器分析多点触摸序列中的触摸stream并且不识别其手势,则该视图接收全部的触摸。 如果手势识别器识别其手势,则视图的其余触摸被取消。 我已经添加了一个轻扫手势,我的看法,它正在工作。 通过一些日志logging,当我做一个单一的滑动,方法报告。 然而,我的touchesBegan方法也是通过它的日志报告,尽pipetouchesCancelled方法,正如所料,也收到一条消息。 我想,并期望,手势识别,以防止touchesBegan或touchesMoved被调用。 所以我的问题是:对于手势识别器实际上是延迟触摸基于其状态,是否有额外的设置必要? 文件没有提出任何其他必要的。 我的设置很简单: swipeUpTwoFinger=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doubleSwipeUp:)]autorelease]; swipeUpTwoFinger.direction=UISwipeGestureRecognizerDirectionUp; swipeUpTwoFinger.numberOfTouchesRequired=2; [self addGestureRecognizer:swipeUpTwoFinger]; 我也尝试过这个testing,以确保识别器在用touchesBegan处理之前失败(如果您相信文档上述内容,则不需要此testing),但touchesBegan在此testing之后仍在处理日志行: if (swipeUpTwoFinger.state==UIGestureRecognizerStateFailed)

目标C:将加载视图添加到视图控制器

在我的应用程序中,我需要为我的许多页面加载屏幕。 我如何创build一个类似的加载效果,如下面的截图所示?

在采取行动之前如何知道几个街区是否已经完成执行?

我正在使用animateWithDuration:animations:completion:在removeFromSuperview:之前移动我的用户界面的几个元素(大约4个元素) removeFromSuperview:被调用。 我的问题是,在调用removeFromSuperview:之前,如何知道所有这些animation已经完成?

禁用平移手势,如果超出检测范围

我有一个UIView我想上下移动屏幕,但是我只想让它平移,以便当它在正常位置(0,0)时不能拖动视图, 我试图检测识别器的中心何时不是视图高度的一半,然而视图是不可移动的,并且中心总是高度的一半(在这种情况下是230)。 有任何想法吗? – (IBAction)panDetected:(UIPanGestureRecognizer *)recognizer { CGPoint translation = [recognizer translationInView:self.view]; NSLog(@"\ncenter.y: %f\ntranslation.y: %f\n", recognizer.view.center.y, translation.y); if (recognizer.view.center.y > ([[UIScreen mainScreen] bounds].size.height – 20)/2) { return; } recognizer.view.center = CGPointMake(recognizer.view.center.x, recognizer.view.center.y + translation.y); [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; }

iOS – viewForFooterInSection粘在UITableView的底部

我有3个部分的UITableView。 他们每个人都有一个使用viewForFooterInSection添加的页脚。 我遇到的问题是,当我向下滚动tableview时,页脚粘到屏幕的底部,不像其他单元格一样滚动。 有谁知道如何做到这一点,页脚几乎就像一个单元格,并与桌子的其余部分一起滚动? 谢谢!