iOS 视图在不同View之间的切换(对于convertRect:函数的一些理解)

可以通过以下函数完成坐标体系在不同View之间的切换,如下面是完成当前View向ParentView坐标的转换(一个矩阵转换)
CGRect parentRect = [currentView convertRect:blankImageView.bounds toView:self.superview];

(self.view 上有viewA 与 viewB 两个视图 btn在viewA上)

绝对rect =[viewA.superView convertRect:btn.frame fromView:viewA];  得到的相对于self.view的 也就是相对于屏幕的

相对rect =[viewA convertRect:btn.frame toView:viewB]

UIView *viewC = [UIView new]; viewC.backgroundColor = [UIColor grayColor]; viewC.frame = rect; [viewB addSubview:viewC];

得到的是btn.frame 当前位置相对于viewB的坐标。

// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;
// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;  

// 将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;
// 将rect从view中转换到当前视图中,返回在当前视图中的rect
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view; 

例把UITableViewCell中的subview(btn)的frame转换到 controllerA中

// controllerA 中有一个UITableView, UITableView里有多行UITableVieCell,cell上放有一个button
// 在controllerA中实现:
CGRect rc = [cell convertRect:cell.btn.frame toView:self.view];
或
CGRect rc = [self.view convertRect:cell.btn.frame fromView:cell];
// 此rc为btn在controllerA中的rect  

或当已知btn时:
CGRect rc = [btn.superview convertRect:btn.frame toView:self.view];
或
CGRect rc = [self.view convertRect:btn.frame fromView:btn.superview];  
时间: 2024-08-06 12:38:52

iOS 视图在不同View之间的切换(对于convertRect:函数的一些理解)的相关文章

如何通过视图控制器UITabBarController实现界面的切换

以下代码实现各个View之间的切换. 创建UITabBarController, 创建视图控制器UIViewControlle 定义控制器的UITabBarItem 将UIViewController数组加入UITabBarController.viewControllers 将UITabBarController设置为窗口的根控制器 为方便看写到了一个文件,要编写每个页面的功能,可以创建继承于UIViewControlle的子类,并在它的init方法里实现一些想要实现的功能. UITabBar

View Programming Guide for iOS 视图编程指南 - iOS

1 有关 Windows and Views 每个应用都至少有一个 window 和一个 view. 1.1 添加额外的 Window 一般在有外界显示设备的时候才需要添加额外的 window 下面的代码举了一个例子,这里假定对象实现了方法 externalWindow,externalWindow 存储一个 window 的引用 - (void)configureExternalDisplayAndShowWithContent:(UIViewController*)rootVC { // C

【转】iOS应用view之间数据传递的方式

数据在view之间传递分为两大类:直接传递与间接传递.其中间接传递里面还可以定义一个singleton,用来共享数据. [iOS5之前的旧解决方法] 1)采用代理模式 子viewcontroller设计 代理协议,定义协议接口,父viewcontroller 实现协议接口,实现子viewcontroller 退出时将相关数据更新到父视图.2)采用ios的消息机制 父viewcontroller注册消息 子viewcontroller 发送消息,触发父viewcontroller的消息处理.3)采

用Swift完成不同View Controller之间的切换

之前用objective-c开发时,页面之间的切换很容易.其实用swift没有很大的变化,如果你是用storyboard完成的界面,基本上是同样的方式,只不过在代码部分写成swift风格的就行了. 今天在实验开发一个简单的小程序时,却遇到了一些bug,后来还是求助stackoverflow上的大神解决了问题,在此做下记录. 我的程序结构是这样的,在一个页面A中有个按钮,然后点击按钮以后,切换到另一个页面B.A和B都在同一个storyboard中. 这里先说下通用的方法: 手动用代码建好的view

IOS中两个view的切换

在ios中,rootview为PassWordViewController,secondview为SecondViewController,实现在rootview中听过一个跳转按钮实现跳转到secondview中,实现方法如下: 在PassWordViewController.h中添加button的事件 -(IBAction) landButtonPressed:(id) sender; 在PassWordViewController.m中 button的实现事件如下: -(IBAction)

Swift - iOS中各种视图控制器(View Controller)的介绍

在iOS中,不同的视图控制器负责不同的功能,采用不同的风格向用户呈现信息.下面对各个视图控制器做个总结: 1,标准视图控制器 - View Controller 这个控制器只是用来呈现内容.通常会用来作为子类,以向屏幕中添加逻辑. 2,导航控制器 - Navigation Controller 这个控制器呈现一个视图控制器的栈,应用程序可以在上面推入更多的视图控制器. 当新视图推入栈,或旧视图弹出栈时,导航控制器会以动画的形式(比如卷动)显示隐藏这些视图. 使用样例:系统“设置”应用程序 3,表

IOS关于UIViewController之间的切换

IOS关于UIViewController之间的切换 1.NavigationController切换UIViewController的两种方式 方法一右侧进入 1 SecondViewController* svc=[[SecondViewController alloc]init]; 2 [self.navigationController pushViewController:fvc animated:YES]; 返回到上一个 [self.navigationController popV

IOS View之间传值

1.利用NSUserDefaults来传值,这种方法只限于传少量数据的情形: 比如你要传一个float的值,在需要传的时候用 [[NSUserDefaults standardUserDefaults] setFloat:float forKey::@"float"] 接收值的时候用 [[NSUserDefaults standardUserDefaults] floatForKey:@"float"] 2.NSNotificationCenter来传值 - (vo

iOS应用架构谈 view层的组织和调用方案

前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二篇出来了. 当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构. 一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们在这时候必须清楚认识到:View层的架构一旦实现或定型,在App发版后可修改的余地就已经非常之小了