❝小闫语录:你可以菜,但是就这么菜下去是不是有点过分了 ❞ 每天不是在写 bug,就是在解 bug 的路上~更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 1.无参数函数作为参数传入调用...当根据实际情况,函数需要作为参数传入时,一般采用如下方式直接调用即可: function fuc1() { console.log(1); } function fuc2(a) { a();...} fuc2(fuc1); // 1 2.有参数函数作为参数传入调用 一般的函数都有参数,那么这种情况如何传参呢?...console.log(param); } function fuc2(a, b) { a(b); } fuc2(fuc1, "欢迎关注微信公众号:全栈技术精选"); 3.有参数函数作为事件方法 现在要将传入的函数作为点击事件的处理程序
二:类的构造与析构 由于类的继承,子类不仅包括了自己定义的存储属性,还包括从父类继承得到的存储属性,类的所有存储属性,包括所有的继承父类的属性,在构造的过程中必须设置初始值,因此类的构造过程相对的比较复杂...你在这个.Swift文件当中定义了的常量和OC中PCH头文件的功能是完全一样的。 ...:UIView) -> Bool { for view in self.subviews { if view .isEqual...Swift学习笔记(十一)--拓展和协议 Swift协议和扩展 六 协议: Swift 的协议的作用类似于 OC中的协议,其实OC的协议你理解的话,这里也就没多少需要在强加去解释的。...协议的基本的用法我以前的博客当中也有说过 Swift 2.2 协议和代理 顺便指出,可选协议这一点,其实也挺简单的,你在这些属性、方法、下标等想让它是可选的,让它加上 optional
在2015年的WWDC上苹果推出了Swift 2.0版本,为了让开发者能从Objective-C更好的过度到Swift上,苹果也为Objective-C带来了Generics泛型的支持。...2、__kindof 类型限制 __kindof:类型限制 使用格式:__kindof XXClass 限制类型是:XXClass类型或XXXClass子类的实例 例1: // 返回值可以是:`UITableViewCell...identifier; 例2: // 数组里可以是:`UIView`或`UIView子类`的实例 @property (nonatomic, readonly, copy) NSArrayUIView *> *subviews; // 这样写代码就没有警告了: UIButton *button = view.subviews.lastObject; 3、自定义泛型 声明一个Generics.../OC 中的应用.
大家好,又见面了,我是你们的朋友全栈君。 1....(最后绘制的,出现在最前面) // it is legal to cycle through it and remove each subview one at a time for (UIView*...(等同于Cocos2d-x中的UI坐标系,原点在左上角) Setting a view’s frame to a different CGRect value repositions the view,...例: 画3个部分重叠的视图 Objective-C: UIView* v1 = [[UIView alloc] initWithFrame:CGRectMake(113, 111, 132, 194)...Bounds and Center(边框和中心) CGRectInset函数,画出视图边框 例1: 画一个带有粗边框的视图 UIView* v1 = [[UIView alloc] initWithFrame
Storyboard 中的界面与ViewController.swift之间的联系(一个界面与一个类文件关联)。...开发中的其他 UIView(及其子类)都放在该view上。 UIViewController中UIView的生命周期函数 viewDidLoad:View 完成内存加载。...UIView添加到UIViewController的View.png UIView的容器概念 UIView 中可以放其他的 UIView。 UIView 的层次关系(平级与包含)。...viewWithTag:根据 tag 值获取视图。 insertSubview:在指定视图的上/下面插入视图。 bringSubviewToFront:把视图移到最顶层。...与 Storyboard 中的 UIView 建立联系。 此时的属性就代表 Storyboard 中的 UIView 所有的 UI 控件都可以拖拽 @IBOutlet。
)drawRect layoutSubviews在以下情况下会被调用: 1、init初始化不会触发layoutSubviews 但是是用initWithFrame 进行初始化时,当rect的值不为...CGRectZero时,也会触发 2、addSubview会触发layoutSubviews 3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化...4、滚动一个UIScrollView会触发layoutSubviews 5、旋转Screen会触发父UIView上的layoutSubviews事件 6、改变一个UIView大小的时候也会触发父...UIView上的layoutSubviews事件 在苹果的官方文档中强调: You should override this method only if the autoresizing...,应该重写sizeThatFits sizeThatFits传入的参数是receiver当前的size,返回一个适合的size sizeToFit可以被手动直接调用 sizeToFit和sizeThatFits
,也可使用“原生类型名 +Extensions”的形式; 正例:UIView+Frame.swift / MessageViewController+Request.swift / UIViewExtensions.swift.../ MARK: - View子视图操作相关 extension UIView { /// 同时添加多个视图 /// - Parameter subviews: 子View可变参数...public func addSubviews(_ subviews: UIView...) { subviews.forEach(addSubview) } ///...正例:if count == 60 * 60 / 2 / 2 {} 反例:if count == 900 {} 【推荐】不要让可选值使用??...,禁止在项目工程中使用;说明:图形化的字面量不仅不方便直观的查看其颜色值或者图片名字,也不利于颜色、图片统一配置、管理。
)drawRect layoutSubviews在下面情况下会被调用: 1、init初始化不会触发layoutSubviews 可是是用initWithFrame 进行初始化时,当rect的值不为...CGRectZero时,也会触发 2、addSubview会触发layoutSubviews 3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化...4、滚动一个UIScrollView会触发layoutSubviews 5、旋转Screen会触发父UIView上的layoutSubviews事件 6、改变一个UIView大小的时候也会触发父...UIView上的layoutSubviews事件 在苹果的官方文档中强调: You should override this method only if the autoresizing...,应该重写sizeThatFits sizeThatFits传入的參数是receiver当前的size,返回一个适合的size sizeToFit能够被手动直接调用 sizeToFit和sizeThatFits
layoutSubviews 5.旋转Screen会触发父UIView上的layoutSubviews事件 6.改变UIView大小的时候也会触发父UIView上的layoutSubviews事件 在苹果的官方文档中强调...反过来的意思就是说:如果你想要在外部设置subviews的位置,就不要重写。...假设有个UILabel 添加它距离左边的距离约束为left的constraint 值为 10 现在我们想让它距左边的距离以动画形式改变为100 如果这么做 UIView.animateWithDuration...drawRect调用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在控制器中,这些View的drawRect就开始画了.这样可以在控制器中设置一些值给...以上1,2推荐;而3,4不提倡 drawRect方法使用注意点: 1、若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。
从 iOS 初始化的核心规则展开而来,Swift 多了一些规则: • 初始化的时候需要保证类(结构体、枚举)的所有非可选类型属性都会有值,否则会报错。...} 如果子类有新的非可选类型属性,或者无法保证所有非可选类型属性都已经有默认值,则需要新创建一个指定初始化器,或者重写父类的指定初始化器 • 新创建一个指定初始化器,会覆盖父类的指定初始化器,需要先给当前类所有非可选类型属性赋值...必须重写旧的定初始化器,在里面调用新的指定初始化器 • 在 Swift 中,初始化的时候需要保证类(结构体、枚举)的所有非可选类型属性都会有值 • 在 Swift 中,必须在初始化完成后才能调用实例属性...,调用实例方法 • 在 Swift 中,如果存在继承,并且子类有新的非可选类型属性,或者无法保证所有非可选类型属性都已经有默认值,那么就需要新创建一个指定初始化器,或者重写父类的指定初始化器,并且在里面调用父类的指定初始化器...• 在 Swift 中,子类如果没有新创建一个指定初始化器,并且没有重写父类的指定初始化器,则会继承父类的指定初始化器和便利初始化器 • 在 Swift 中,子类如果新创建一个指定初始化器,或者重写了父类的某个指定初始化器
3、 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。 4、 滚动一个UIScrollView会触发layoutSubviews。...5、 旋转Screen会触发父UIView上的layoutSubviews事件。 6、 改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。 7....如果view的frame值为0,即使被添加了耶不会调用layoutSubviews。 2.Lays out subviews文档解析。...在iOS5.1或之前的版本中,这个方法什么也没干.这个方法的默认实现是 用参数来设定subviews的尺寸和位置的 ....如果你需要更加精确的布局,可以在子类里面重写这个方法.仅仅在以下情况下:自动布局达不到你想要效果时你才有必要重写这个方法.你可以直接设置subviews的尺寸.
组成,树的叶节点都是由 UIView 组成。...UITableView 和 UICollectionView 的树级关系没有到每个具体的 cell,避免产生很多无用的 id,而是将 indexpath 作为描述信息传入。实现逻辑如下图: ?...而对于业务数据,数据是有持有者的, 例如我们 Controller 的一个属性值, 或者数据在 Model 的某一个层级。就可以通过 KVC 的的方式来递归获取该属性的值来取到业务数据。...这个方法对 UIControl 及继承 UIControl 的子类对象有效,如:UIButton、UISlider 等。...和 UIViewController 生命周期埋点不同的是,一个类中可能有许多不同的 UIButton 子类,相同的 UIButton 子类在不同的视图中的埋点也要区分出来,所以我们通过 NSStringFromClass
本篇博客中的动画是动画中的一种--转场动画(CATransition)。 1.为导航控制器添加动画。...在一般的开发中在一个控制器push到下一个控制器的时候苹果会有一个默认的动画即下一个控制器平移过来将上一个控制器覆盖,大多数的应用也使用了苹果给出的默认动画效果。...kCATransitionFromRight kCATransitionFromLeft */ transition.subtype = kCATransitionFromRight; // 动画子类型...] indexOfObject:self.greenView]; NSUInteger blue = [[self.view subviews] indexOfObject:self.blueView...] indexOfObject:self.greenView]; NSUInteger blue = [[self.view subviews] indexOfObject:self.blueView
swift tips Swift中有很多有用的小技巧,用好了能使代码更加安全,简洁,易于理解或效率更加高效,在这记录一些编写swifty code的小技巧。...1、for in 循环中的可选值解包 当使用for in循环一个包含可选值的数组时,我们可能会使用if let 或guard解包: let animals = ["dog", nil, "pig",...,可以参考:Objective-C中实现Swift中的defer 5、布尔值取反 在任何编程语言中,布尔值都是最常用和最简单的数据类型之一。...用来切换布尔变量的值。...6、数组内元素的类型转换 常见的情况在获取一个视图的所有子视图后,需要给某一类视图做一些操作,以UILabel为例 使用for in 循环 for subview in self.view.subviews
UITouch对象 UITouch的方法 - (CGPoint)locationInView:(UIView *)view; 返回值表示触摸在view上的位置 这里返回的位置是针对view的坐标系的(以...view的左上角为原点(0, 0)) 调用时传入的view参数为nil的话,返回的是触摸点在UIWindow的位置 - (CGPoint)previousLocationInView:(UIView *...管理的事件队列中。...; for (int i = count - 1; i >= 0 ; i--) { // 取出显示在最前面的子控件 UIView *childView = self.subviews...是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer(敲击) UIPinchGestureRecognizer(捏合,用于缩放) UIPanGestureRecognizer
OC版原文链接:关于如何在每个UITabBarItem上添加提示小红点 以分类的方式实现 代码 UITabBar+Extenstion.swift fileprivate let lxfFlag:...self.removeBadgeOn(index: itemIndex) // 创建小红点 let bageView = UIView...// MARK:- 移除小红点 fileprivate func removeBadgeOn(index itemIndex: Int) { // 按照tag值进行移除..._ = subviews.map { if $0.tag == itemIndex + lxfFlag { $0.removeFromSuperview...小红点 附上相关项目:Swift 3.0 高仿微信
分支的介绍 分支即if/switch/三目运算符等判断语句 通过分支语句可以控制程序的执行流程 二. if分支语句 和OC中if语句有一定的区别 判断句可以不加() 在Swift的判断句中必须有明确的真假...,因为只有声明成可选类型后,才可以判断是否为空 // 可选类型会在后续讲解,可先了解即可 let view : UIView?...三目运算符 Swift 中的 三目 运算保持了和 OC 一致的风格 var a = 10 var b = 50 var result = a > b ?...a : b print(result) 四.guard的使用 guard是Swift2.0新增的语法 它与if语句非常类似,它设计的目的是提高程序的可读性 guard语句必须带有else语句,它的语法如下...Switch作为选择结构中必不可少的语句也被加入到了Swift中 只要有过编程经验的人对Switch语句都不会感到陌生 但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性 switch
每次点击发生的时候,点击对象都放在一个集合中传入UIResponder的回调方法中,我们通过集合中对象获取用户点击的位置。...UIWindow对象接受到事件开始进行最优响应视图查询的过程(逆序遍历subviews,后加载的先遍历)。...未超出范围则进行步骤3 3.对当前视图下的subviews采取逆序上述1 2步骤查询最优响应视图。...第一响应者是应用程序中当前负责接收触摸事件的响应者对象(通常是一个UIView对象)。...这时我们如果还想再加inputAccessoryView,按API中的说法,就需要新建一个该视图的子类,并重新声明inputAccessoryView属性为readwrite的。
必须要自定义UIView子类继承自UIView。因为苹果不开源,没有把UIView的.m文件提 供给我们。...我们只能通过子类继承父类,重写子类方法的方式处理UIView的触摸事件(注意:我说的是UIView触摸事件而不是说的 UIViewController的触摸事件)。...view的事件就不需要自定义UIView子类继承于UIView,因为可以在viewController.m 文件中重写touchBegan:withEvent:方法,但是,我们此处讨论的是处理UIView...所以,还是那句话,想处理UIView的触摸事件,必须自定义UIView子类继承自UIView。 2.1.UIView的拖拽 那么,如何实现UIView的拖拽呢?...:(UIView *)view; // 返回值表示触摸在view上的位置 // 这里返回的位置是针对view的坐标系的(以view的左上角为原点(0, 0)) // 调用时传入的view参数为nil的话
模糊效果 FXBlurView - 是一个UIView子类,支持iOS5.0以上版本,支持静态、动态模糊效果,继承与UIView的模糊特效。...SnapKit - 就是“snap”, --swift 喜欢自动布局吗?当然喜欢!至少在storyboard中创建时会喜欢。...Cartography - Cartography 是用来声明 Swift 中的 Auto Layout,无需输入任何 stringly 就可设置自己 Auto Layout 的约束声明。...FXLabel - FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。...placeholder_TextView - 带有placeholder的TextView:带有提示信息的textview,使用懒加载的思想,支持扩展、自定义,类似许多APP内部的意见反馈页面 。
领取专属 10元无门槛券
手把手带您无忧上云