首页
学习
活动
专区
圈层
工具
发布

iOS 面向协议方式封装空白页功能

为了良好的交互体验,相信大家在对待scrollView无数据时的提示页都会使用一些第三方来定制,最典型的就是使用DZNEmptyDataSet。...而Swift除了可以面向对象编程,它还可以面向协议编程。那可不可以也用协议来解决情况呢?...但是比较麻烦,因为UserDefaults是单例,整个进程共用这一份资源,如果你当前controller遵守了我们的协议LXFEmptyDataSetable并做出了定制,那么当下一个controller在遵守协议后使用了默认定制时...,非常地恰巧,我们定义的方法lxf_EmptyDataSet需要外界将UIScrollView传递进来,在DZNEmptyDataSet的数据源方法和代理方法也有scrollView。...可以使用Cocoapods的方式来安装使用 pod 'LXFProtocolTool' 我也将 iOS - Swift 面向协议编程(二) 中提及的通过协议便捷加载xib的功能也集成了进来。

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

    Ios常用第三方框架(一)

    通过一个 UIScrollView 的扩展,可以轻松为 UIScrollView 的所有子类添加下拉刷新功能。...SnapKit - 就是“snap”, --swift 喜欢自动布局吗?当然喜欢!至少在storyboard中创建时会喜欢。...在代码中纯手工创建约束灰常痛苦,但幸运的是我们有了SnapKit,在board中用上它,你可以简单直观地编写约束了。...第二个Demo模拟了一个经典的FlowLayout,任意一个元素隐藏时,底下的元素需要自动“顶”上来,配合这个扩展,你可以在IB里连一连,选一选,不用一行代码就能搞定。...FXLabel - FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。

    6.5K31

    MyLayout&TangramKit 的重大升级!

    在UIView类中提供了一个可供重载的方法: - (CGSize)intrinsicContentSize NS_AVAILABLE_IOS(6_0); 如果某类视图有自己的固有内容尺寸则需要重载这个方法的实现...系统内部的实现中如果布局引擎在布局时发现某个视图没有设置高度或者宽度约束那么就会去调用这个视图的intrinsicContentSize方法,如果这个方法返回了正常的尺寸则视图就按这个尺寸来进行渲染和展示...为此当UIScrollView要和AutoLayout进行结合使用并实现滚动能力的话就不能直接将所有子视图都添加到UIScrollView中去, 而是需要中间建立一个容器视图,首先将容器视图添加到UIScrollView...在设置约束依赖时将容器视图的上下左右分别依赖UIScrollView视图的上下左右边界,如果需要上下滚动则将容器视图中的最底部子视图的底部边界依赖容器视图的底部边界。...因此如果想使用布局视图的尺寸自适应功能,那么在将布局视图的尺寸设置为wrap后,就可以像使用UILabel那样不用去设置布局视图的宽度约束和高度约束了。比如有两个兄弟视图A,B。

    2.7K20

    关于Autolayout和Masonry自动布局的几个坑

    采用子控制器的原因是因为防止所有的逻辑代码都混在根控制器中,所以没有使用nicklockwood 的iCarousel 或SwipeView ,而是采用了之前一直在用的SCPageViewController...记录下自动布局中遇到的几个坑。...所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。...self.isBigger; }]; button;}); 关于UIScrollView的自动布局 上面提到的页面遇到了多重的UIScrollView,使用自动布局的时候也是够蛋疼的。...具体使用技巧参考Masonry自动布局详解九:复杂ScrollView布局、在UIScrollView中使用Autolayout布局以及iOS_autoLayout_Masonry。

    1.9K20

    关于Autolayout和Masonry自动布局的几个坑

    采用子控制器的原因是因为防止所有的逻辑代码都混在根控制器中,所以没有使用nicklockwood的iCarousel或SwipeView,而是采用了之前一直在用的SCPageViewController...记录下自动布局中遇到的几个坑。...所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。...self.isBigger;}];button;}); 关于UIScrollView的自动布局 上面提到的页面遇到了多重的UIScrollView,使用自动布局的时候也是够蛋疼的。...具体使用技巧参考Masonry自动布局详解九:复杂ScrollView布局、在UIScrollView中使用Autolayout布局以及iOS_autoLayout_Masonry。

    1.7K20

    iOS开源界面布局库终于破3000star

    默认是NO.如果设置为YES的话则边缘视图的边距不起作用了,而且子视图的weight也不起作用了。而且不是调整自己的大小了 //也就是当垂直方向则所有子视图按顺序排列在中间。...但实际中我们总是带着解决问题的想法去使用某个框架和库的,我这里想说的是当你在使用AutoLayout时因为复杂的约束设置以及更新方法而焦头烂额时,当你使用AutoLayout而对多屏幕多设备适配而进行多条件编写时...,当你使用AutoLayout对你的布局性能造成影响时,也许你会想着是否有一个新的布局库能帮我解决这个问题,没有错,也许MyLayout就能帮你解决你实际中的众多复杂布局和性能的问题,而且MyLayout...所以你也可以先以尝试的态度来接触和使用这种新的布局解决方案,而且为了让大家能更好的使用这个布局库,在我的开源库中为每种布局都建立了异常丰富的演示和使用的DEMO,同时我还建立了一个能供大家交流和解决问题的...swift版本的TangramKit中得到了有效的解决。

    2.1K40

    在 Swift图表中使用Foundation库中的测量类型

    在 Swift 图表中使用Foundation 库中的测量类型 在这篇文章中,我们将建立一个条形图,比较基督城地区自然散步的持续时间。...虽然我们可以记住我们在创建测量时使用了小时hours,但这并不理想。例如,我们可以决定以后改变数据模型,以分钟为单位存储持续时间,或者数据可能来自其他地方,所以手动重构单位并不是一个完美的解决方案。...of External Types),如果Swift Charts在未来添加了这种一致性,它可能会被破坏。...只是在与原始值转换时要使用相同的单位,这一点很重要。 我们现在可以更新我们的图表,以使用我们的自定义Plottable类型。...我们收到的值是使用我们在Plottable一致性中定义的初始化器创建的,所以在我们的案例中,测量值是以分钟为单位提供的。但我相信对于这个特定的图表,使用小时会更好。

    3.6K20

    在 Swift 图表中使用 Foudation 库中的测量类型

    虽然我们可以记住我们在创建测量时使用了小时 hours,但这并不理想。...Conformances of External Types[3]),如果 Swift Charts 在未来添加了这种一致性,它可能会被破坏。...只是在与原始值转换时要使用相同的单位,这一点很重要。 我们现在可以更新我们的图表,以使用我们的自定义 Plottable 类型。...我们收到的值是使用我们在 Plottable 一致性中定义的初始化器创建的,所以在我们的案例中,测量值是以分钟为单位提供的。但我相信对于这个特定的图表,使用小时会更好。...最后的结果是在X轴上显示以小时为单位的格式化持续时间。 你可以从我们的 GitHub repo 中获得这篇文章中使用的项目的完整 示例代码[4]。

    3.3K30

    用AutoLayout实现分页滚动

    滚动视图分页 UIScrollView的pagingEnabled属性用于控制是否按分页进行滚动。在一些应用中会应用到这一个特性,最典型的就是手机桌面的应用图标列表。...这些界面中往往每一页功能都比较独立,系统也提供了UIPageViewController来实现这种分页滚动的功能。 实现分页滚动的UI实现一般是最外层一个UIScrollView。...其原因是无论是分页滚动还是不分页滚动,在滚动时都是通过调整滚动视图的contentOffset来实现的。...而当滚动视图进行横竖屏切换时不会调整对应的contentOffset值,这样就导致了在屏幕方向切换时的滚动位置出现异常。...解决的办法就是在屏幕滚动时的相应回调处理方法中修正这个contentOffset的值来解决这个问题。

    2.3K40
    领券