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

iOS 面试策略之系统框架-UIKit

直接拖拽和点选即可配置 UI,界面所见即所得。 跳转关系清楚。Storyboards 中可以清楚的区分 View Controller 界面之间的跳转关系。...storyboard/xib 中搜索起来很不方便,且统一修改多个 UI 控件的属性值不可能,必须一个一个改。在代码中一个工厂模式就可以搞定。 性能影响。...4.UIView 和 CALayer 有什么区别? 关键词: #性能 #交互 UIView 和 CALayer 都是 UI 操作的对象。...iPhone X 中一般是指扣除了顶部的 status bar(高度为20)、navigation bar(高度为44)和底部的 home indicator 区域(高度为34),这样应用的内容不会被刘海挡住或是影响底部手势操作...关键词:#Adaptive UI #Size Class #Auto Layout 为了针对各种机型,苹果在 iOS 8 中引入了 Adaptive UI 的概念。

1.5K20

iOS 自定义分段控制器

//设置菜单栏高度 @property (nonatomic,assign) NSInteger btnViewHeight;...设置按钮下划线宽度 @property (nonatomic,assign) NSInteger indicatorWidth; //默认50,我们最好设置一下 //设置按钮下划线高度...seletedBtn setTitleColor:self.titleSelectColor forState:UIControlStateNormal]; } } 我们在内部处理了界面偏移和按钮状态更改...,如外面有代理,也会将当前第几个页面的index回调给代理,外部逻辑处理会变得很简单 5.个性配置,即设置属性更改UI 我们实现属性的set方法,在set方法内部更改UI #pragma mark -...注:以上代码就是按顺序来的所有代码,其中用到了一个UIView的扩展文件,可直接访问UIView的left、width等属性。布局也使用frame,大家能更清楚逻辑。

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

    iOS-屏幕适配实现(Autoresizing)

    Autoresizing简介 Autoresizing是苹果早期屏幕适配的解决办法,当时iOS设备机型很少、屏幕尺寸单一、APP界面相对简单,屏幕适配并没有现在这么复杂,所有的UI控件只要相对父控件布局就可以了...UIViewAutoresizingFlexibleBottomMargin = 1 << 5 //与父视图上边间距固定,下边可变 }; 注意:UIView的autoresizesSubviews...UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin view与其superView的上下左右边距的比例维持不变,宽高固定,反映在...storyBoard中,就是什么都不设置 UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin...同理, 如果垂直方向同时固定了上边距和下边距,那么我们不能固定子控件的高度(反应在storyBoard中的设置,也就是必须使控制子控件高度的虚线变为实线) Autoresizing缺点 Autoresizing

    27510

    Unity SKFramework框架(二)、UI模块

    private void Start() { Canvas uiCanvas = UI.Canvas; } } 2.UI Resolution 分辨率 using...{ private void Start() { Camera uiCamera = UI.Camera; } } 二、UIView 视图 1.ViewLevel...视图层级 视图默认被分为以上层级,也可以通过更改该枚举实现自定义层级结构,当UI模块初始化时,系统会根据该枚举中包含的字段自动创建视图层级: 2.创建视图 以一个首页视图为例,创建脚本HomeView...,继承UIView视图基类: using SK.Framework; public class HomeView : UIView {} 将脚本挂载到视图预制体上,并将预制体放到Resources文件夹内...Tween类型动画中,Main表示该视图的整体动画,也可以为该视图下的UI元素添加动画,通过拖拽UI元素到“Drop Animation Element Here”区域实现添加: 四个开关分别表示移动动画

    84020

    用AutoLayout实现分页滚动

    这些界面中往往每一页功能都比较独立,系统也提供了UIPageViewController来实现这种分页滚动的功能。 实现分页滚动的UI实现一般是最外层一个UIScrollView。...容器视图添加N个页视图,对于水平分页滚动来说容器视图的高度和滚动视图一样,而宽度则是滚动视图的宽度乘以页视图的数量,页视图的尺寸则和滚动视图保持一致,对于垂直分页滚动来说容器视图的宽度和滚动视图一样,而高度则是滚动视图的高度乘以页视图的数量...分页滚动UI布局 AutoLayout实现分页滚动的方法 根据上面的UI结构这里用AutoLayout的代码来实现水平分页的滚动。这里的约束设置代码是iOS9以后提供的相关API。...MyLayout布局库是笔者开源的一套功能强大的UI布局库。...containerView.gravity = MyGravity_Vert_Fill | MyGravity_Horz_Fill; //设置线性布局中的所有子视图均分和填充线性布局的高度和宽度。

    1.9K40

    为什么SwiftUI的视图使用结构体?

    在UIKit中,每个视图都来自一个名为UIView的类,该类具有许多属性和方法:背景色,确定其放置方式的约束,用于将其内容呈现到其中的图层等等。...其中有很多,每个UIView和UIView子类都必须具有它们,因为继承是这样工作的。...您会发现,类能够自由更改其值,这可能导致代码混乱——SwiftUI如何知道什么更改了值并需要更新UI?...通过生成不会随时间变化的视图,SwiftUI鼓励我们转向更具功能性的设计方法:在将数据转换为UI时,我们的视图变成简单的,惰性的东西,而不是会失去控制的智能化的东西。...相比之下,Apple的UIView文档列出了UIView拥有的约200种属性和方法,无论是否需要它们,所有这些属性和方法都将传递给其子类。

    3.2K10

    为什么 SwiftUI 的视图使用结构体

    在 UIKit 中,每个视图都来自一个名为UIView的类,该类具有许多属性和方法:背景色,确定其放置方式的约束,用于将其内容呈现到其中的图层等等。...其中有很多,每个UIView和UIView子类都必须具有它们,因为继承是这样工作的。...在 UIKit 中,UIStackView 是一种非渲染视图类型,旨在简化布局,但这意味着即使它因为继承的原因具有背景色,也从未真正使用过。...您会发现,类能够自由更改其值,这可能导致代码混乱—— SwiftUI 如何知道什么更改了值并需要更新 UI?...通过生成不会随时间变化的视图,SwiftUI 鼓励我们转向更具功能性的设计方法:在将数据转换为 UI 时,我们的视图变成简单的,惰性的东西,而不是会失去控制的智能化的东西。

    2.4K50

    iOS9新特性——堆叠视图UIStackView

    iOS9新特性——堆叠视图UIStackView 一、引言         随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard...和一些第三方的框架,对于创建约束来说,已经十分方便,但是对于一些动态的线性布局的视图,我们需要手动添加的约束不仅非常多,而且如果我们需要插入或者移除其中的一些UI元素的时候,我们又要做大量的修改约束的工作...首先,我们在ViewController中拉入一个stackView: ? 将一些属性设置如下: ? Axis是设置布局的方向,有水平和垂直两种方式,一个StackView只能选择一种布局模式。...UIStackViewAlignment alignment; 这个属性用于设置控件的对其模式,枚举如下: typedef NS_ENUM(NSInteger, UIStackViewAlignment) {    //水平布局时为高度充满...我们设置了对其方式为充满,这样的话,我们就不需要再做过多控件尺寸的约束,如果我们被管理的控件高度或者宽度不一,我们可以设置中心对其,这样的话,我们还需要为每个控件添加一个宽度或者高度的约束,如下:

    2K10

    浅汇-iOS UI布局

    iOS中UI的布局是很重要的,而在前期开发中就要选定好布局的方法,因为这对整个工程乃至于后期的版本维护都有很重要的影响。...使用了这么久,       对于父试图是  Button / UITextFeild等非UIView的直接子类,布局其子视图时,这里面的约束是不生效的。...2、实现了UIView内子视图的自动布局; 3、实现了UIScrollView内容高度根据内部子视图的内容高度动态设置; 4、实现了一个UITableView有多个不同Cell的时候,所有cell高度自适应...; 实现Label高度固定,宽度自适应(超出后不显示),宽度固定,高度自适应。...; 这面这一个协议中设置即可,关键是cell中的设置,cell中的设置需要满足两点:第一个是子视图的相对位置关系的设置,第二个是设置[self setupAutoHeightWithBottomView

    2.1K20

    View编程指南(三)

    但是,如果您的nib文件未与view controller关联,则可以使用NSBundle或UINib对象手动加载nib文件内容,该对象使用nib文件中的数据来重构view对象。...contentMode和contentStretch属性确定在view的宽度或高度更改时如何处理内容。 contentScaleFactor属性仅在需要为高分辨率屏幕自定义view的绘制行为时使用。...缩放view会更改view的宽度和高度,但不会更改其center. View Hierarchy中转换坐标 在许多情况下,特别是在处理事件时,应用程序可能需要将坐标值从一个参照系转换为另一个参照系。...在编写布局代码时,请务必以下列方式测试您的代码: 更改view的方向以确保布局在所有支持的接口方向上正确。 确保你的代码正确响应状态栏高度的变化。...动画块是启动view相关更改的另一个常见位置。内置到UIView类中的动画支持可以轻松地将更改设置为查看属性。

    1.8K30

    Autolayout

    Autolayout Autolayout是一种“自动布局”技术,专门用来布局UI界面的 Autolayout自iOS6开始引入,由于Xcode4的不给力,当时并没有得到很大推广自iOS7(Xcode5...)开始,Autolayout的开发效率得到很大的提升 苹果官方也推荐开发者尽量使用Autolayout来布局UI界面 Autolayout能很轻松地解决屏幕适配的问题 Autolayout的2个核心概念...UILabel实现包裹内容 设置宽度约束为 <= 固定值 设置位置约束 不用去设置高度约束 基于Autolayout的动画 在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration...= NO; [self.view addSubview:blueView]; UIView *redView = [[UIView alloc] init]; redView.backgroundColor...make.width.equalTo(blueView.mas_width);//和蓝色view的宽度相等 }]; 制作九宫格样式的视图布局 填充一个View控件到父控件中,

    92860

    解析SwiftUI布局细节(三)地图的基本操作

    (点击地图位置会获取经纬度,反地理编译得到具体的位置信息,显示在列表中) SwiftUI怎样使用UIKit的控件 ---- 我们来总结一下,SwiftUI怎么使用UIKit的控件,中间的连接就是...associatedtype UIViewType : UIView /// Creates the view object and configures its initial state....关于刷新数据这个是比较简单的,用到的就是我们前面提的绑定数据的模式,这点真和Rx挺像的,你创建了一个列表,然后给列表绑定了一个数组数据源,等你网络请求到数据之后,你需要处理的就是去改变这个数据源的数据,它就能去刷新它绑定的UI...self.userLocationArray) /// 加1 aroundLocationIndex += 1 } } 通过上面的解析应该了解了请求到数据之后我们怎样去刷新UI...First,你拿到的是经纬度,你要想获取这个经纬度的具体位置信息就得经过反地理编码,拿到某某市区某某街道某某位置的信息,在CoreLocation中做地理编码和反地理编码的就是 CLGeocoder 这个类

    2.1K10

    【IOS开发基础系列】Autolayout自动布局专题

    在接着后面-[]中括号里面对当前的View/控件 的高度/宽度进行设定; options:字典类型的值;这里的值一般在系统定义的一个enum里面选取; metrics:nil;一般为nil,参数类型为NSDictionary...ZXPAutoLayout详细教程点此- github地址点此 //设置一个背景为半透明红色的view,上下左右四边都距离superview的距离为10 UIView *bgView = [UIView...//layout.topSpace(10).leftSpace(10).bottomSpace(10).rightSpace(10); }]; 3 界面设置实现自动布局 iOS8开发~UI布局(二)storyboard...系统运行时会总是以Storyboard中布局来刷新页面,所以代码中设计得布局一定要与Constraint中设计的布局保持一致。...需要频繁变更的讨论 http://segmentfault.com/q/1010000002420050 实时显示iOS编写UI代码效果 http://blog.csdn.net/zhang_red/article

    34940

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

    的时候,它不同于 UIView,UIView中 init方法调用后,UIView就已经绘制好(初始化好了)。...但是在VC中,当前UIView的是在 viewDidLoad 执行后才初始化好的,所以我们会见到这样一个Bug,在VC初始化语句后面调用 一个 VC的绘制UI的方法,你会发现根本没有效果,这就是因为,VC...中跟试图的初始化是需要时间的,你在VC根试图初始化之前调用绘制UI的方法当然是不会有效果出现的。...那么将在每次设置或更改frame的时候自动调用drawRect:。...以上1,2推荐;而3,4不提倡 drawRect方法使用注意点: 1、 **若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。

    1.9K30

    聊聊iOS中的 MVC、MVP、MVVM以及 VIPER等代码组织方式

    对于 iOS理论上来来说所有以 UI 开头的类基本都属于这层。...P层处理完了业务逻辑,如果要更改view的显示,那么可以通过回调来实现,这样可以减轻耦合,同时可以单独测试P层的业务逻辑。...在 MVP 中,Presenter 可以理解为松散的控制器,其中包含了视图的 UI 业务逻辑, 所有从视图发出的事件,都会通过代理给 Presenter 进行处理; 同时,Presenter 也通过视图暴露的接口与其进行通信...不是的, 区别就是IOS中: (1)苹果的理想MVC中UIView相当于View,UIController是Controller,而在MVP中,UIView和UIController都相当于View,...唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。 这样开发者就不用处理接收事件和View更新的工作,框架已经帮你做好了。

    4.3K21

    关于物理效果的动画引擎 UIDynamic 介绍

    为了实现动力 UI,需要注册一套 UI 行为的体系,之后 UI 便会按照预先的设定进行运动了。...只有当想要添加力学的 UIView 是 ReferenceView 的子 view 时,动力 UI 才发生作用。...再看下一个碰撞 我这里写碰撞动画的时候用了两个 button,其实大家可以猜到我是让两个 button 来碰撞的,碰撞的过程中也是会走代理方法的,开始碰撞啊,碰撞结束啊之类的。...有了这些,似乎可以做个老鹰捉小鸡的游戏了 - -… UISnapBehavior 将 UIView 通过动画吸附到某个点上。...写代码要学会举一反三触类旁通。    这篇博客写的比较急,但是总体上来说功能没问题,细节上有什么问题,大家找我一起交流

    72540
    领券