在iOS13中发现presentViewController和之前弹出的样式不一样 显示如下图 ?...屏幕快照 2019-10-21 上午11.01.50.png 原因: 在iOS13中modalPresentationStyle的默认改为UIModalPresentationAutomatic...解决方案:每个UIView都做修改是不现实的,统一的实现方式为: 在plist文件中增加配置项UIUserInterfaceStyle,值为UIUserInterfaceStyleLight。...8.通过kvc获取获取searchBar中的TextField方法更改,会引起崩溃 原因: ios13之后把SearchBar中的textField直接暴露给开发者使用,无需在通过kvc获取。...原因:因为使用LaunchImage来设置启动图,要求我们必须提供各种屏幕尺寸的启动图,来适配各种设备,相对而言比较麻烦,使用 LaunchScreen的话,情况会变的很简单。
首先,所有 UIKit 本身所提供的 UI 控件(例如 UIView,UILabel,UITextView等等) ,只要没有针对颜色等内容特殊设置过,都会自动适配深色模式,这部分是我们开发者不需要去关心的...因此在实际开发中,我们可以创建我们自定义的动态颜色。...在 iOS 13 中, UIKit 为 UIColor 所提供的 新 API 来创建我们自己的动态颜色。...的一个新功能,给xcassets中的颜色设置深色和浅色俩种表现形式。...,那也可以利用xcassets 中图片新增的 Apperance 属性,分别设置两种模式下所使用到的图片: 模糊效果 模糊效果也就是我们常说的毛玻璃效果。
就会无法获得足够的宽度。...(横竖屏时不设置的话无法使用,因为横屏的时候,之前设置的Frame属性 还是竖屏的Frame)`,当然可以使用Fram的方法达到屏幕适配和自动布局,但是中间的过程是复杂而且工作量巨大的,写起来也是痛苦的...2、实现了UIView内子视图的自动布局; 3、实现了UIScrollView内容高度根据内部子视图的内容高度动态设置; 4、实现了一个UITableView有多个不同Cell的时候,所有cell高度自适应...实现了UIScrollView可滚动高度根据内部子视图的内容高度动态设置 /** 设置scrollview内容自适应,第一个参数为作为底部的子视图,第二个参数为到sc底部的间距。...; 这面这一个协议中设置即可,关键是cell中的设置,cell中的设置需要满足两点:第一个是子视图的相对位置关系的设置,第二个是设置[self setupAutoHeightWithBottomView
使用这种方式你会在代码中无辜增加很多if...else... 的条件判断语句。另一种方式是获取到屏幕的尺寸后,按照控件和屏幕的比例来设置控件的frame,其本质上也是写死frame。...width按比例调整,高度固定,右边距固定,上边距固定,下边距固定(下图的xib中预览效果与实际效果有差,实际效果是view的上边距不变)(这种约束方式相当于上下间距固定,高度固定,那么父控件高度缩放的时候就会产生冲突...控制器的view的autoresizing 注意:如果我们在storyBoard中选中控制器的view,然后在尺寸检查器中查看会发现,autoresizing中控制子控件的宽度和高度的虚线自动变成了实线...原因在于,UILabel是根据内容自动调整宽度和高度,如果没有内容,那么宽度和高度就是0,导致UILabel无法显示。...父控件随子控件变化而变化 如果希望父控件随子控件(UILabel/UIView)高度的变化而变化,就不要给父控件添加高度约束,只需要子控和向父控件在垂直方向上添加约束,这样子控件高度改变,父控件高度也会随之改变
并提供了视图隐藏和显示时会自动激发布局、布局视图的高度自适应(UITableviewCell动态高度)、标签云实现、左右内容宽度自适应、按比例分配尺寸和间距、整体停靠控制等等各种强大的功能。...布局尺寸类MyLayoutSize MyLayoutSize类是用来描述一个视图的尺寸的类。UIView中扩展出了widthSize,heightSize这两个变量来实现视图的宽度和高度尺寸的设置。...您可以用其中的equalTo方法来设置视图的宽度和高度。...您需要提供一个实现曲线路径的函数、一个特定的坐标体系、一种特定的子视图在曲线上的距离设置这三个要素来实现界面布局。当曲线路径形成后,子视图将按相等的距离依次环绕着曲线进行布局。...将#import "MyLayout.h" 头文件放入到您的pch文件中,或者在需要使用界面布局的源代码位置。
如何自己创建一个动态的 UIColor 上面我们说到系统提供了一些动态的颜色供我们使用,但是在正常开发中,系统提供的颜色肯定是不够用的,所以我们要自己创建动态颜色。...我们可以在 UIViewController 或 UIView 中调用 traitCollection.userInterfaceStyle 来获取当前视图的样式,代码如下 if trainCollection.userInterfaceStyle...我们可以用以下代码将当前 UIViewController 或 UIView 的模式。...题外话:当我们用 Xcode11 创建项目,我们会发现项目结构发生了变化,window 从 AppDelegate 移到 SceneDelegate 中。...如何在模式切换时打印日志 在 Arguments 中的 Arguments Passed On Launch 里面添加下面这行命令。
滚动视图还满常见的,这里学习了一下基本所有的用法、属性设置和委托,单讲一个ScrollView也很简单,直接上代码远比一个个讲要清晰明了地多。...,这里表示可以下滑十倍原高度 self.scrollView.contentSize = CGSizeMake(320, 460*10); //设置当滚动到边缘继续滚时是否像橡皮经一样弹回...[self.view addSubview:self.scrollView]; //创建两个label显示在ScrollerView中,第二个要滚动才能看见...中添加了一个设置了大小的ScrollView,在ScrollView中添加了两个Label,两个Label的开始y值不同所以第一个一开始就能看见,而第二个要向下滚动才能看见,如图: 由于截图时间来不及所以第二张图看不到滚动条了...,但是是滚动下来才能看得见: 基本方法代码中的注释已经讲的很清楚了,如果有不太清楚的可以自己试着调一下,也可以一起讨论讨论~ 可以在github上下载我的工程:https://github.com/Cloudox
在之前的文章iOS的性能优化中我详细介绍了卡顿产生的原因,这里不做赘述,总结成一句话就是:GPU或者CPU的消耗过大,导致在一次同步信号之间没有准备完成,没有内容提交,导致掉帧。...中添加UIKit的方式1 UIView *subView1 = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 60, 60)]; subView1...本身决定,这样的一个好处就是,可以很轻易地实现动态的高度。...在堆叠布局中,以垂直或水平堆叠对齐item,堆叠布局可以是另一堆叠布局的子布局,这使得可以使用ASStackLayoutSpec来创建任何布局。...alignItems,交叉轴上的排列方式 flexWrap alignContent lineSpacing Flexbox在ASDK中的工作方式与CSS在Web中的工作方式是相同的。
同时我们对UIView扩展出了两个属性tg_width, tg_height分别用来表示视图的布局宽度和布局高度。他其实是对原生的视图bounds属性中的size部分进行了扩充和延展。...在iOS中我们可以通过UIView的bounds属性来完成视图的尺寸设置,而通过center属性来完成视图的位置设置。为了进行简单的操作,系统提供了frame这个属性来简化对尺寸和位置的设置。...在TGLayoutSize类中,我们可以通过方法equal来设置视图尺寸的多种类型的值,类中是通过重载equal方法来实现多种类型的值的设置的。...比如: A.tg_width.equal(100) //A的宽度为100 A.tg_height.equal(200) //A的高度为200 TGWeight类型的值表示视图的尺寸是一个依赖于父视图尺寸的相对比例值...在TGLayoutPos类中,我们可以通过方法equal来设置视图位置的多种类型的值,类中是通过重载equal方法来实现多种类型的值的设置的。
Xcode中的规则是:Xcode只为那些你没有设置任何约束的对象创建自动约束。一旦你增加一个约束,你便是告诉Xcode你接管了这个视图。...在接着后面-[]中括号里面对当前的View/控件 的高度/宽度进行设定; options:字典类型的值;这里的值一般在系统定义的一个enum里面选取; metrics:nil;一般为nil,参数类型为NSDictionary...NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeWidth multiplier: 1.0 constant:0]]; //设置子视图的高度是父视图高度的一半...ZXPAutoLayout详细教程点此- github地址点此 //设置一个背景为半透明红色的view,上下左右四边都距离superview的距离为10 UIView *bgView = [UIView...在Storyboard界面配置自动布局要点: 1、对于一个视图内同级别的子视图,要配就全部都配置成自动布局; 2、对于每个视图,无法上下左右四个方向上的设置,一定要设置全; 3、
模糊效果 FXBlurView - 是一个UIView子类,支持iOS5.0以上版本,支持静态,动态模糊效果,继承与UIView的模糊特效。...至少在storyboard中创建时会喜欢。在代码中纯手工创建约束灰常痛苦,但幸运的是我们有了SnapKit,在板中用上它,你可以简单直观地编写约束了。...Cartography - Cartography是用来声明Swift中的Auto Layout,无需输入任何字符串就职设置自己Auto Layout的约束声明。...Auto-Layout-Showcase - swift,AutoLayout进阶演示,宽高比约束,比例约束,不等约束,视差约束,低优先级约束等高级用法,无需写码即可进行复杂页面布局,Demo还动态模拟了各屏幕下的效果...支持Cell,Label和Tableview高度自适应,致力于做最简单易用的AutoLayout库。 Neon.swift - 功能强大的UI布局神器。
Xcode中开发者账号登陆不上 ? 试了试其他的账号也是一样,在账号密码没有输入错误的情况下还是登陆不上。 解决办法:重启电脑就解决了。 2. Xcode9中往工程中拖入文件很容易报错 ?...(此Bug在iOS8也会出现,iOS 9/10是正常的。)...选择B后 不知何种原因,B是无效的,如果勾选 Automatically manage signing 后就无法指定某个配置文件签名打包了。...这是因为:self.whiteBgView的高度是0,造成的,我晕。正确的设置为,self.whiteBgView高度动态设置好了后再加边框,这样就不会出现这样的问题了。...self.sd_layout.heightIs(Scale_Y(150)); } completion:^(BOOL finished) { [self addBorad]; //高度设置好以后再设置边框
毋庸置疑的:在iOS开发中,制作动画效果是最让开发者享受的环节之一。一个设计严谨、精细的动画效果能给用户耳目一新的效果,吸引他们的眼光 —— 这对于app而言是非常重要的。...界面动画 在这段动画之中发生的最为明显的事情就是两个文本框的位置变化,在动画开始之前,两个文本框的位置应该是在屏幕的左边,而下方的按钮现在是隐藏状态(设置alpha) ?...在viewDidAppear:中运行这段代码,你会看到文本框从左侧滑动,按钮也渐变显示出来的,但是跟我们要的结果不太一样 —— 三个动画没有错开,效果并不那么的好看。...在上面的代码中,密码输入框在延后0.35秒之后开始从左侧出来,在持续0.5秒的动画之后,开始渐变显示按钮,然后动画完成。...: dampingRatio:速度衰减比例。
UIScrollerView常见属性 CGPoint contentOffset 这个属性用来表示UIScrollerView滚动的位置(其实就是内容左上角与ScrollerView左上角的间距值...的四周增加额外的滚动区域,一般用来避免scrollerView的内容被其他控件挡住 UIScrollerView无法滚动的原因 没有设置contentSize scrollEnabled = NO 没有收到触摸事件...必须设置scrollerView的缩放比例 scrollerView.maximumZoomScale = 2.0; scrollerView.minimumZoomScale = 0.2;...*)scrollView{ return [UIView new]; } ScrollerView缩放的代理回调 //滚动视图在和方法的实现结束时调用此方法,但仅在请求动画时调用setContentOffset...YES,滚动视图在完成滚动到内容顶部时发送此消息 - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{ NSLog(@"滚动视图在完成滚动到内容顶部时发送此消息
,然后设置对应的View显示 && 位置变化 Demo展示: singleVC.gif 进阶篇:跨控制器改变View的显示 demo中的View都在同一个界面,可以直接在observeValueForKeyPath...方法中,直接通过 UIView的成员变量改View的状态,但是如果跨控制器呢?...,然后在observeValueForKeyPath 方法中,由于无法直接控制外部VC的界面属性,所以通过代理传值,告诉外部控制器,界面要发生的变化 //tableView控制器的.m文件 -(void...,按钮View 和 tableView就不要再一直往上跑了,最多就上移一个View的位置就够了,所以要添加判断; 如果是在同一个控制器中,可以添加 - _navigationView.hidden...10.png 解决办法:Y值虽然是0无法进行判断,但是可以通过tableView的高度进行判断!
iOS头部渐变的表格视图设计 今天再来给大家带来一个开发中常用到的视图控制器,在很多应用中,可能都会遇到这样的一个需求:表视图控制器最上方有一个头图控件,当表格视图滑动在顶部时,导航栏透明... * 2.这个视图控制器如果是被present出来的 则不会出现假导航栏 * 3.这个视图控制器中自带一个TableView 设置TableView的头图不会影响原动画效果 *... */ @property(nonatomic,strong)UIView * animatedHeaderView; /** * 设置TableView的头视图 * * 注意:设置tableView...的头视图不能够在使用tableHeatherView方法 要使用这个属性设置 * */ @property(nonatomic,strong)UIView * tableHeaderView; /*...* * 设置动画头图高度 * * 这个属性如果不设置或者设置为0 则默认会使用设置的image图片比例 * */ @property(nonatomic,assign)CGFloat headerHeight
背景提要 今天写一个简单的自定义控件,实现宽固定,高度根据自定义宽高比例自动调整;或高固定,宽度随比例调整。...,如: app:solid="solid_width" // solid_height 找源码 我们知道自定义控件的属性是定义在attrs.xml文件里的,所以猜测Android自带的属性也为定义在其sdk...public static final int SOLID_HEIGHT = -2; // 常量标记:未设置比例 private static final float...int width = 0; // 根据自定义的宽高比例,高度适当比例改变 int height = 0; if (mSolid ==...super.onMeasure(widthMeasureSpec, heightMeasureSpec); return; } // 将重新定义后的宽度和高度设置为图片显示的大小
5UIView开发技巧 5.1常用技巧 5.1.1使用半透明View与不透明SubView 半透明背景视图只能用此种方法设置颜色,否则subView也是半透明的。...UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白。...UITouch对象在触摸操作的过程中在不断变化,所以在使用UITouch对象时,不能直接retain,而需要使用其他手段存储UITouch的内部信息。...,scrollview同为topView的子视图,但scrollview覆盖在button之上,这样在在button上的触摸操作返回的hit-test view为scrollview,button无法响应...view中,返回在目标视图view中的rect •- (CGRect)convertRect:(CGRect)recttoView:(UIView*)view; •//将rect从view中转换到当前视图中
)]; //红色view顶部与蓝色view底部位置一样, 左边与蓝色的右边一样, 宽度跟蓝色view一样, 高度40pt UIView *redView...toDimension:ALDimensionWidth ofView:blueView]; //设置红色view的高度为40 [redView autoSetDimension...autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:redView withOffset:10.0]; //设置黄色view的高度25...10, 与父view垂直居中, 高度是黄色view高度的两倍, 宽度是150 UIView *greenView = [[UIView alloc] init]; [greenView...view在父件垂直中心线上 [greenView autoAlignAxisToSuperviewMarginAxis:ALAxisVertical]; //设置绿色view高度是黄色
image.png 原因是cell中contentview改为了懒加载,如果添加自定义子view前没有访问.contentview,添加的view会被contentview覆盖。...当代码设置 tableHeaderView = nil tableHeaderView = UIView() tableHeaderView = UIView.init(frame: CGRect.zero...这种需求一般是在有无tableHeaderView之间切换,当不需要tableHeaderView时,可如下设置 tableHeaderView = UIView.init(frame: CGRect(...sectionHeader和sectionFooter的预估高度为0,所有系统下,顶部都有空白。...(设置为0即自动计算高度,设置为非0数值,iOS13.2以下系统顶部有空白,iOS13.2及以上系统顶部无留白)