首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UIKit Dynamics:开始入门 —《Graphics & Animation系列一》

准备开始 在ViewController.swift 添加如下代码在viewDidLoad: let square = UIView(frame: CGRect(x: 100, y: 100,...将以下代码插入viewDidLoad中添加square的代码下面: let barrier = UIView(frame: CGRect(x: 0, y: 300, width: 130, height...因此,如果以编程方式更改对象的框架或转换属性,则可以预期这些值将被覆盖。 这意味着当它处于动态的控制之下时,不能使用变换来缩放对象。...到目前为止,UIKit Dynamics已经根据物品的界限自动设置物品的物理属性(如质量和弹性)。 接下来,将看到如何使用UIDynamicItemBehavior类自己控制这些物理属性。...在屏幕上只能看到一个方块的UISnapBehavior效果会更容易。 在viewDidLoad上添加两个属性: var square: UIView!

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    UI篇-VC的生命周期以及UIView的layoutSubviews和drawRect方法

    一个VC 在执行viewWillDisappear 或者viewDidDisappear 方法时都是出栈之后才执行的,也就是说 已经不在 self.navigationController 的viewControllers...但是在VC中,当前UIView的是在 viewDidLoad 执行后才初始化好的,所以我们会见到这样一个Bug,在VC初始化语句后面调用 一个 VC的绘制UI的方法,你会发现根本没有效果,这就是因为,VC...5、旋转Screen会触发父UIView上的layoutSubviews事件。 6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。...drawRect 掉用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在 控制器中,这些View的drawRect就开始画了...那么将在每次设置或更改frame的时候自动调用drawRect:。

    1.9K30

    demo1 动态显示view或弹框 动态隐藏view或弹框

    点击弹框的周围区域也可以关闭按钮。 点击上边的隐藏弹框也可以关闭按钮。   在实现功能的基础上,以动画的形式展示跟隐藏。 思路:在之前的开发中,我的思路比较局限。...效果猛一看是可以实现,但是这个关闭按钮的点击事件,却不怎么好使,因为按钮有一部分超出了view的界限,于是,点击起来就不太好使。 遇见问题,解决问题。于是我就转换了一种思路。...view UIView *contentView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREENW-120,SCREENH-200...); }]; _erCodeIMG.hidden = YES; }]; } } - (void)viewDidLoad...{ [super viewDidLoad]; self.view.backgroundColor = [UIColor yellowColor]; // Do any

    1.1K70

    iOS面试题-UI篇

    UIView显示在屏幕上归功于CALayer,通过调用drawRect方法来渲染自身的内容,调节CALayer属性可以调整UIView的外观, UIView继承自UIResponder,比起CALayer...可以响应用户事件,Xcode6之后可以方便的通过视图调试功能查看图层之间的关系 UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。...CALayer实例,UIView有一个layerClass方法,返回主layer所使用的类,UIView的子类,可以通过重载这个方法,来让UIView使用不同的CALayer来显示,如: - (class...) layerClass { // 使某个UIView的子类使用GL来进行绘制 return ([CAEAGLLayer class]); } UIView的CALayer类似UIView...补充部分,这部分有深度了,大致了解一下吧,UIView的layer树形在系统内部被系统维护着三份copy 逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份 动画树,这是一个中间层,系统正是在这一层上更改属性

    2K21

    Container ViewController自定义转场控制器。

    前言 最近接触到新公司的老项目改版。自从来了之后一直在忙另一个项目,也没有看老项目的实现逻辑。 看到设计稿的时候,并不是普通的树形标签导航的样子。大致效果如FaceU的主页: ?...布局类似,但是功能有点不一样: 顶部左侧的按钮点击后会出现个人中心页。 顶部中间还有个按钮,点击会出现一个业务页 顶部左侧的按钮也会出现业务页。 刚看完之后,感觉这种设计真麻烦。...- (void)leftAction { } - (void)rightAction { } 并创建一个左侧的控制器TestOneViewController: - (void)viewDidLoad...inActiveVC { if (inActiveVC) { [inActiveVC willMoveToParentViewController:nil]; [UIView...相对应的右侧弹出的实现方式一样,只是把Frame更改下,就可以实现从右侧弹出的效果。具体代码就不贴了。 如果想回到主页,只用写个移除self.currentVC的方法,调用下就可以了。

    71610

    UIBarButtonItem我用了这些姿势才能和你交互

    UIButton *btn; for (UIView *view in self.navigationController.navigationBar.subviews) { if...因为我们这个界面只有一个元素,我们就逻辑就没做复杂的判断了。 我们在输入框文字进行改变的时候,动态获取发现是可以的。当我在 ViewDidLoad方法直接调用这个方法竟然这个按钮还没有添加。...我们要做就做的好一些,在 ViewDidLoad页面加载设置 Done按钮不允许用户进行交互。 但是刚才的方法已经不能获取到了。...如果我们自定义按钮,自然是没有什么难度的,但是考虑到要自己设置按钮的颜色。如果之后全部更改颜色,这个地方就要改动,万一忘记改动就会出现问题。 所以觉得还是用系统的,之后禁用系统的交互。...突然想起来,没有任何一个编辑界面让用户进来就可以提交,都是用户改变了输入框的内容之后才可以进行提交的。 这样我们在进入这个页面直接禁用 Done也是可以的。

    89350

    UIView不可不知的秘密

    前言: 1、在Mac OS中NSWindow的父类是NSResponder,而在iOS中UIWindow的父类是UIView。程序一般只有一个窗口但是会又很多视图。...2、UIView的作用:描画和动画,视图负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体等等。...下面介绍的是view添加以及删除时所触发的方法 // 当视图添加子视图时调用 - (void)didAddSubview:(UIView *)subview; // 当子视图从本视图移除时调用...创建实例,添加到控制器的view,设背景色为紫色,并将001赋给tag值 override func viewDidLoad() { super.viewDidLoad() let...viewDidLoad添加一个带有延迟的添加红色view代码,值得一提的是,这是最新swift3.1的GCD延时方法 //如果不需要在主线程执行,就去掉main DispatchQueue.main.asyncAfter

    1.7K90

    谈谈对drawRect的理解

    写在前面 UIView对于iOS开发来讲,再熟悉不过了。也正是因为这一点,我们可能会忽略UIView一些特有方法的理解和使用。今天,笔者主要整理一下对drawRect方法的理解和使用。...当子类使用Core Graphics和UIKit绘制视图内容时就需要在该方法中添加绘制的代码。 drawRect简介 drawRect方法在UIView的使用上起着十分关键的作用。...不知道大家注意过没有,每一次创建UIView子类文件时候,会有自动带有已注释的drawRect方法,也许从这一点就能看出这个方法的重要性。...这个是由系统自动调用的,主要是在UIViewController中loadView和viewDidLoad方法调用之后; 如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用...后被调用,所以可以先调用sizeToFit计算出size,然后系统自动调用drawRect:方法; 通过设置contentMode属性值为UIViewContentModeRedraw,那么将在每次设置或更改

    1.8K20

    UIKit Dynamics 置身真实世界

    一、着手 打开ViewController.swift,并将以下代码添加到下面的代码viewDidLoad: let square = UIView(frame: CGRect(x: 100, y: 100...与障碍物碰撞 可以看出,square跟障碍物交互不是很正确,障碍物应该不可移动,更奇怪的是障碍物从屏幕的底部反弹,并不像square那样沉稳,因为重力行为与障碍物无关 六、隐形边界和碰撞 将碰撞行为初始化更改回最初...collision = UICollisionBehavior(items: [square]) 在这一行之后,添加一下内容:(添加跟barrier相同frame的boundary) collision.addBoundary...七、在碰撞的背后 每个动态行为(dynamic behavior)都有个一个action属性,你可以在action属性中提供要在动画每一步执行的block,讲下列代码添加到viewDidLoad: collision.action...= UIColor.gray } 到目前为止,UIKit Dynamics通过根据您的项目的界限进行计算,自动设置物品的物理属性(如质量和弹性)。

    1.3K100
    领券