Tag: uiview

如何打开UIViewControllers和保持状态没有NavgationController

我在我的应用程序中有3个视图。 我想知道如何正确打开并加载点击button时的意见。 目前,当从第一个视图中点击一个button时,我打开第二个视图 [self dismissViewControllerAnimated:NO completion:nil]; getPLViewController = [[GetPLViewController alloc] initWithNibName:@"GetPLViewController" bundle:nil]; UIWindow* keyWindow= [[UIApplication sharedApplication] keyWindow]; [keyWindow addSubview:getProjectListViewController.view]; [self presentViewController:getPLViewController animated:NO completion:nil]; 而现在第二个观点是开放的,我打开第三个像这样 currentPLViewController = [[CurrentPLViewController alloc] initWithNibName:@"CurrentPLViewController" bundle:nil]; UIWindow* keyWindow= [[UIApplication sharedApplication] keyWindow]; [keyWindow addSubview: currentPLViewController.view]; [self presentViewController:currentPLViewController animated:NO completion:nil]; 我不知道这是否正确了,因为如果我在上一个视图完成加载之前尝试加载视图,或者沿着这些行加载了视图,则一直遇到显示的视图出现问题。 这是我从视图控制器返回的方式 [self dismissViewControllerAnimated:NO completion:nil]; 所以我想知道这是一个正确的做法吗? 或者,还有更好的方法? 任何帮助,将不胜感激。

didMoveToWindow:如何调用这个方法?

我花了很多时间search这个没有太多成功(包括文档),仍然困惑didMoveToWindow:方法。 在库存视图项目模板中使用didMoveToWindow: : -(void)didMoveToWindow{ [super didMoveToWindow]; // do something } 给出以下警告: 警告:'UIViewController'可能不会响应'didMoveToWindow' 它不被称为启动的观点,这是一个惊喜。 这个方法如何被调用?

在iOS上,我们可以从UIScreen对象获取主UIWindow对象吗?

说,如果我们已经有aScreen屏幕指向主屏幕,通过 UIScreen *aScreen = [UIScreen mainScreen]; 我们可以从这个UIScreen对象到主UIWindow对象吗? (他们是否有任何连接?也就是说,而不是使用[UIApplication sharedApplication].keyWindow )

convertPoint:fromView:在模拟器上运行良好,而不是在设备上运行

我很高兴看到这个: 答案如何转换子视图的点,它在模拟器上完美的工作。 但由于某种原因,它不能在设备上工作…这可能是视图的位置是不同的设备pipe理 – 或者它只是另一个谜? 或者(希望)我写错了,你们可以帮助… 🙂 这是我的路线: CGPoint yoel = [imagePressed.imageView convertPoint:imagePressed.frame.origin toView:nil];

选中时,视图从UITableViewCell消失

我有一个UITableView自定义UITableViewCells。 单元格的内容保存在一个单独的类中,扩展了UIView(我有3种内容,通过隐藏和显示视图来切换,因为我希望在单元格之间进行切换,所以我采用了这种方法)。 所以让我们假设我有一个可见的视图,并添加到单元格的contentView。 这个视图包含一些文字和由UIViews构成的一些矩形。 一切都很好直到现在,但奇怪的是当我触摸细胞,矩形简单地消失,文本保持不变。 你知道可能是什么问题吗? 我试图将视图添加到backgroundView,它也是这样做的。 – (id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { self.active = NO; state = -1; // Touch is not working if the view has no bounds self.backgroundView = [[UIView alloc] init]; self.backgroundColor = [UIColor clearColor]; self.selectedBackgroundView = [[UIView alloc] init]; self.selectedBackgroundView.backgroundColor = [UIColor […]

在Interface Builder xib文件中用自定义大小deviseUIView子类自动布局

我有一个UIView子类,其布局在.xib文件中。 我将尺寸设置为自由forms,尺寸为200 x 300。 如何为iPad设置不同的尺寸,以便“View as”选项能正确显示它的外观样式? 或者,这可以以不同的方式实现吗? 也许使用故事板而不是xib文件?

在自定义视图中制作2个animation

我创build一个自定义的视图,它包含像本教程之后的 刷新 ,* LayoutSubviews *的方法 我想要一个标签animation越来越大,它的全宽,然后回到0宽度。 我在“刷新”方法使用此代码: [UIView animateWithDuration:1.3 animations:^{ CGRect frame = CGRectMake(50, 15, 140, 20); [labelFav setFrame:frame]; } completion:^(BOOL finished) { //[labelFav setHidden:YES]; [UIView animateWithDuration:1.3 animations:^{ CGRect frame = CGRectMake(50, 15, 0, 20); [labelFav setFrame:frame]; }]; }]; 该代码可以在任何其他视图上工作,但是由于某种原因,这是一个自定义视图,所以完成块没有执行。 发生什么事是它只做第一块。 我在“完成”块中设置了一个断点,它停在那里,但animation不会发生。 我试图设置隐藏的标签,但仍然没有发生。 有任何想法吗?

无法在animation期间将mainview旁边的子视图最小化

我有两个视图,videoView(它是mainView)和subVideoView(它是mainView的子视图)。 我正在试图同时使用animation同时最小化两个视图,如下面的代码所示。 我能够最小化videoView(即mainView)而不是subVideoView。 但是,当我隐藏代码以最小化videoView(即mainView)时,我能够最小化subVideoView。 我相信它必须以我的animation方式做一些事情。 有人可以请教,我怎样才能最大限度地减less这两个意见(成比例)同时animation,结果与下面的结果。 已有的代码结果 func minimiseOrMaximiseViews(animationType: String){ UIView.animate(withDuration: 0.5, delay: 0, options: [], animations: { [unowned self] in switch animationType { case "minimiseView" : // Minimising subVideoView self.subVideoView.frame = CGRect(x: self.mainScreenWidth – self.minSubVideoViewWidth – self.padding, y: self.mainScreenHeight – self.minSubVideoViewHeight – self.padding, width: self.minSubVideoViewWidth, height: self.minSubVideoViewHeight) // Minimising self ie videoView self.frame = […]

如何在被拖动的子视图中检测触摸(或者在其超级视图中获取哪个子视图下方的最快方式)

我有一个超级视图,它有一堆子视图。 我希望用户能够在超级视图中拖动手指,当他们拖动子视图时,该子视图会发生变化。 我需要这样做非常有效率,因为变化可以发生得非常快。 到目前为止,我所尝试的是,在超级视图中,我可以从touchesBegan:withEvent:和touchesMoved:withEvent获取触摸事件:这两个组合给了我所需要的所有触摸。 在每次调用这些方法时,我都必须遍历所有子视图并像这样testing for (UIView *view in self.subviews) { if (CGRectContainsPoint(view.frame, touchPoint) { return view; } } 然后改变那个观点,但我想。 问题是,从我的基准testing来看,这个过程只是两个缓慢的过程。 我的直接想法是让子视图自己检测触摸,然后只是发布通知或类似的东西,当他们被挖掘。 这样我就不用在superview里面遍历每一个奇怪的触摸事件。 我遇到的问题是,我还没有find一种方式来获取子视图自己来检测,当他们只是拖动,触摸实际上是源于不同的UIView时,他们被触摸。 我接受任何加快第一个stream程的build议,或者有不同的方法来完成这个任务。

如何完全使用animationWithDuration和transitionWithView

我尝试使用animationWithDuration和transitionWithView来创build一个大的animation。 我想要做这样的事情: 使用animationWithDuration移动视图A. 在step1完成之后,使用animationWithDuration移动视图B. 在step2完成之后,用transitionWithView(With OptionCurlDown)显示视图C, 我真的看过网,我不知道该怎么做。 我的问题是,步骤3始终与步骤A同时开始。如果我只做步骤1和步骤2,这是好的,我的意思是,步骤2只有当步骤1完成时才会启动。 但是我没有第三步的运气! 我也尝试在animationWithDuration中嵌套transitionWithView,但结果是一样的, 谢谢 更新 以下是代码本身: 主function: [fileMenuController hide:0.2 andDelay:0.1]; [drawingToolController show:0.2 andDelay:0.2]; [penSizeMenuController showSubViewWithDuration:0.4]; fileMenuController隐藏function: [UIView animateWithDuration:duration //begin animation delay:delay options:UIViewAnimationCurveEaseIn animations:^{ [self.view setFrame:CGRectOffset([self.view frame], 0, -self.view.frame.size.height)]; } completion:nil ]; drawingToolController显示function: [UIView animateWithDuration:duration //begin animation delay:delay options:UIViewAnimationCurveEaseIn animations:^{ [self.view setFrame:CGRectOffset([self.view frame], 0, self.view.frame.size.height)]; } completion:nil ]; penSizeController显示function: […]