文字换行 使用 storyboard:设置Lines为 0,然后在Text中用option+回车换行。 使用代码:label.numberOfLines = 0,设置文字的时候用\n换行。...文字换行 使用 storyboard:设置 Lines Break 为Word Wrap,然后在 title 中用option+回车换行。...如果需要显示成滚轮模式,需要手动设置: datePicker.preferredDatePickerStyle = .wheels 注意:需要在 frame 之前设置。...} } 静态单元格 需要使用 UITableViewController。 直接在 storyboard 中布局,不需要使用数据源方法,但如果需要使用到代理方法,仍然需要在控制器中实现相应的方法。...Section的头尾 section.boundarySupplementaryItems = [header, footer] 附加视图使用之前需要注册SupplementaryView,后面会进行讲解
效果预览 一、前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewController.view上有一个UIScrollView,UIScrollView上有UISlider...UISlider与UIScrollView、全屏侧滑pop返回手势冲突示意图 现象3 、当你长按UISlider超过150ms后直接拖拽,就不存在现象2中UISlider与UIScrollView、全屏侧滑返回的冲突问题了...scrollView.delaysContentTouches = NO; delaysContentTouches 默认值为YES 表示延迟scrollView上子视图的响应,所以当直接拖动UISlider...但是只要长按住UISlider一会儿再拖动,此时touch时间超过150ms,因此滑动的event会发送到UISlider上,然后UISlider再作出响应;设置为NO后,拖动UISlider时就可以直接做出响应...方案二: 重写类别UIScrollView+GestureConflict中的如下方法来解决UISlider与UIScrollView之间的冲突,然后还需要执行下面 问题补充 中的操作来处理UISlider
设置内容....,如果有涉及到不一样的东西(offset,图片名字,tag)都需要对这个复用代码的方法添加参数....如果在A方法中需要使用B方法中创建的某个对象或变量,如果拿不到,那么就应该定义一个全局的属性,把B方法中创建完成的对象赋值给全局属性. 6 通过center修改位置 center只能用来修改位置 center...是CGPoint类型,是当前控件中心点到父控件“父视图”的左上角 7 通过frame修改大小 通过frame修改大小时左上角原点不动 8 通过bounds修改大小 bounds 和 frame 都是CGRect...(**在某个transform的基础上-一般为自身**, **旋转的弧度**); 9. 4恢复transform形变 在发生形变的时候苹果推荐使用transform.
播放器怎么能少的了关键的组件呢,我们还需要引入框架AVFoundation.framework。我们会用到组件AVAudioPlayer来播放我们的音频。 ...1.下面的代码是为我们的应用添加背景图片,也就是我们上面图片中的黑色背景图片,在初始化ImageView的时候我们知道view的位置和大小CGRectMack(x, y, width, height);...用Image来通过图片文件的名称来载入我们的图片,把图片视图插入到主视图的最底层,同时设置其index来实现,代码如下。...,就是当segment的selectedSegmentIndex改变时,调用我们注册的方法。...1.当slider的值改变是我们要调用的方法如下,就是要设置一下音频播放器的声音,代码如下: 1 2 3 4 5 //改变声音 -(void)changeVo { self.player.volume
@property(nonatomic) BOOL delaysContentTouches; //27.如果这个值设置为YES,那么当你在UIScrollView上面放置任何子视图的时候,当你在子视图上移动的时候...,UIScrollView会给子视图发送touchCancel消息,而如果该属性设置为NO,ScollView本身不处理这个消息,全部交给子视图处理 @property(nonatomic) BOOL...canCancelContentTouches; //28.自定义默认行为,当手指触摸在显示的内容由子类重写 - (BOOL)touchesShouldBegin:(NSSet *)touches...,一般用来避免scrollView的内容被其他控件挡住 @property(nonatomic) BOOL bounces; 设置UIScrollView是否需要弹簧效果 @property(nonatomic...(比如让控制器监听scrollView的行为) 设置scrollView的delegate(代理)为控制器对象 scrollView.delegate = 控制器; 控制器要遵守UIScrollViewDelegate
keyTimes : 可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的...API使用后`无法上架app`。...[ 1 0 0 1 0 0 ] CGAffineTransformIdentity /// 自定义矩阵变换,需要掌握矩阵变换的知识才知道怎么用。...等同于 CGAffineTransformRotate(self.transform, angle) CGAffineTransformMakeRotation(CGFloat angle) CGAffineTransformRotate...,可以在形变之后设置该值以还原到最初状态 样例 self.demoImageView.transform = CGAffineTransformIdentity; transform严格的说不是一种动画
UIslider滑块控件在IOS开发中会常用到,可用于调节音量,字体大小等UI方面的交互,用法总结如下: 初始化一个滑块: UISlider * slider = [[UISlider alloc]...,如果没有设置边界值,默认为0-1; 设置滑块最小边界值(默认为0) @property(nonatomic) float minimumValue; 设置滑块最大边界值(默认为1) @property...(nonatomic,getter=isContinuous) BOOL continuous; 这个属性设置为YES则在滑动时,其value就会随时变化,设置为NO,则当滑动结束时,value才会改变...minimumTrackImageForState:(UIControlState)state; - (UIImage *)maximumTrackImageForState:(UIControlState)state; 对应的设置当前状态的响应属性的方法...添加触发事件 [slider addTarget:self action:@selector(log:) forControlEvents:UIControlEventValueChanged]; 学习使用
UITapGestureRecognizer(点按) Tap手势有两个属性, numberOfTapsRequired numberOfTouchesRequired: numberOfTapsRequired为触发事件需要点击的次数...,默认是1; numberOfTouchesRequired为触发事件需要的几个手指点按,默认是1; 若都设置为2,就需要两个手指同时点按2次才会触发事件。...但是我们使用中,使用已经封装好的的API对控件进行变形处理。...: 给本身没有交互功能的控件()imagView, UIlabel, View等)添加手势,要设置userInteractionEnabled为YES,否则识别不了手势 想要手势共存需要: 遵守 UIGestureRecognizerDelegate...pinch.delegate = self; pinch.delegate = self 在storyboard中添加手势 在storyboard的控件栏中我们可以看到手势控件 使用方法: 直接将手势控件拖到要添加的视图上
唤醒后播放音频文件 在请求到合成语音后,要在后台或者锁屏状态下播放音频文件,AVAudio Session的Category值需要使用AVAudioSessionCategoryPlayback或是AVAudioSessionCategoryPlayAndRecord...然而前面提到App在被VoIP Push唤醒之后,需要将AudioSessionCategory设置为AVAudioSessionCategoryPlayback或AVAudioSessionCategoryPlayAndRecord...0.1s,则意味当前静音开关为开启状态。...,如果用户在使用app的过程突然弹出音量框,会对用户造成困扰,不建议使用这种方式,并且苹果在iOS7.0以后已将该属性标为deprecated。...方式二:通过MPVolumeView设置音量 第二种方式则是将一个看不见的MPVolumeView添加到当前视图上,系统音量提示框就不会显示了。
UIView视图使用initWithFrame:初始化,而其UIViewController则使用init类方法直接初始化。3....通过调用initWithRootViewController:方法可以将特定控制器设置为根。...使用pushViewController: animated:可推入一个新的控制器,从而增加新的项到导航栈。(记住:导航栏控制器不添加一个视图进去,这个导航栏是没有意义的!)...可使用popToRootViewControllerAnimated:BOOL直接弹出到根视图控制器。 6. 设置导航栏的按钮并不是去设置导航栏本身。...• – setEditing:animated:设置编辑状态 5.
Collider需要交互的UI都要加Collider Botton按钮 Toggle拖拽框 Solider滚动条 Tween动画相关 AtlasMaker图集制作器 FontMaker...UIPanel提供一个画布 在UIPanel中我们不能将不同的Panel的Depth设置为同一个,否则会出现警告....4个方向,在中间的将锚点设置为中间 5.depth:深度值不能相同,UIPanel深度值优先于元素的深度值 UILabel Overflow字的填充方式 Alignment填充方式 Gradient...颜色梯度 Effect字体效果 Spacing间距 UIToggle StartingState初始状态 Group值的Toggle组,来控制一组Toggle UISlider Value...Tween动画 UIPlayTween:控制的物体含有两个以上Tween动画的使用使用,或者要控制多个动画中的一部分的时候使用.
写在前面 弄了下个人站...防止内容再次被锁定...所有东西都在这里面 welcome~ 个人博客 效果 自定义一个功能简单的分段的滑杆 可显示分段名 为了显示效果,我们将滑块和节点都设置为不规则...效果.gif 需求分析 我们需要的是一个可分段slider 主要元素有 滑杆视图 滑杆上的节点 节点名称 当前滑块 由于要设定节点和滑块的frame,size又是可变的,最死脑细胞的就是滑块和节点frame...代码部分 查看UISlider控件发现这个类是继承自UIControl,那么就自定义一个UIControl来实现UISlider没有的效果。...公开的变量中都是一些通用的参数,无非就是颜色、图片之类的,我这里使用比较少,有兴趣的可以自行添加。...self.partRectArray[index] CGRectValue]; [self setNeedsDisplay]; NSLog(@"point = %f",point.x); //增加控制事件
UITapGestureRecognizer(点按) Tap手势有两个属性, numberOfTapsRequired numberOfTouchesRequired: numberOfTapsRequired为触发事件需要点击的次数...,默认是1; numberOfTouchesRequired为触发事件需要的几个手指点按,默认是1; 若都设置为2,就需要两个手指同时点按2次才会触发事件。...但是我们使用中,使用已经封装好的的API对控件进行变形处理。...: 给本身没有交互功能的控件()imagView, UIlabel, View等)添加手势,要设置userInteractionEnabled为YES,否则识别不了手势 想要手势共存需要: 遵守 UIGestureRecognizerDelegate...storyboard中的手势控件 使用方法: 直接将手势控件拖到要添加的视图上 ? 关联手势事件 ? 设置手势属性 ?
imageWithCGImage:cgimg]; CGContextRelease(ctx); CGImageRelease(cgimg); return img; } 自定义相机拍照视图...后置摄像头,麦克风(音频输入) @property (nonatomic, strong) AVCaptureDevice *device; //AVCaptureDeviceInput 代表输入设备,他使用...AVCaptureDevice 来初始化 @property (nonatomic, strong) AVCaptureDeviceInput *input; //输出图片 @property (nonatomic...后来发现我在设置图片尺寸的时候设置为1080P[self.session canSetSessionPreset: AVCaptureSessionPreset1920x1080],前置摄像头并不支持这么大的尺寸...所以一定要先设置位置,再设置对焦模式。 曝光同上
初始化AVPlayer和AVPlayerLayer,并将AVPlayerLayer添加到imageView的layer上,在layoutSubviews中设置playerLayer的frame //...其他控件显示以及状态的设置 // 隐藏遮盖版 self.coverView.hidden = YES; // 设置工具栏状态 self.toolView.alpha = 0; self.isShowToolView...= NO; // 设置工具栏播放按钮状态 self.playOrPauseBtn.selected = NO; 这盖板只有播放完毕之后显现,点击重播之后又隐藏,因此使用hidden直接隐藏即可,而工具栏需要重复显示...(IBAction)playOrPauseBtnClick:(UIButton *)sender { // 播放状态按钮selected为YES,暂停状态selected为NO。...frame即可,当退出全屏时,dismiss掉CLFullViewController然后将CLAVPlayerView的frame设置为原来的值。
默认情况下,用iphone录制的视频,如果要在mac上播放,可能需要将其翻转。 首先理清一下iOS与Mac坐标系统: iOS的UIKit坐标系统是已左上角为坐标原点,向右为X轴正向,向下为Y轴正向。...Mac的AppKit坐标系统是已左下角为坐标原点,向右为X轴正向,向上为Y轴正向。 CoreGraphic坐标系统与AppKit坐标系统一致。...应用AVFoundation处理视频,初始状态下,屏幕原点坐标在左上角,其坐标图如下: IMG_1811.jpg 上图阴影部分代表屏幕窗口,阴影上虚线表示录制视频覆盖位置,正常情况下如果将视频尺寸设置为窗口尺寸...因此,如果此时我们还想将视频进行180度顺时针翻转,不能简简单单的执行下面代码: transform = CGAffineTransformRotate(transform, M_PI); 我们要注意在翻转时...这时候我们需要将视频平移回来才能得到我们想要的结果。
•改变透明度:改变视图的alpha值。 •改变状态:隐藏或显示状态。 •改变视图层次顺序:视图哪个前哪个后。 •旋转:即任何应用到视图上的仿射变换(transform)。...使用CATransition类实现动画,只需要建立一个Core Animation对象,设置它的参数,然后把这个带参数的过渡添加到图层即可。...讨论 如果设置为YES那么当动画在运行过程中,当前视图的位置将会作为新的动画的开始状态。如果设置为NO,当前动画结束前新动画将使用视图最後状态的位置作为开始状态。...讨论 自动重复是当动画向前播放结束後再重头开始播放。使用setAnimationRepeatCount:类方法来指定动画自动重播的时间。如果重复数为0或者在动画块外那将没有任何效果。...例如缓存,你不需要在视图转变中不停的更新,你只需要等到转换完成再去更新视图。 讨论 如果你想要在转变过程中改变视图的外貌。
, 然后点击按下状态时, 大按钮显示另外一个背景图片; 3.上下左右按钮 : 点击四个按钮, 大按钮进行上下左右移动; 4.放大缩小按钮 : 点击放大, 大按钮放大, 点击缩小, 大按钮缩小; -...类型的属性, 会将 Highlighted 状态的图片默认设置成半透明, 这里为了避免这种情况, 需要 将 Type 属性设置为 Custom , 这样就可以自己定制按钮的属性了; 9.设置向上箭头按钮...: 设置向上箭头按钮, 并设置其 默认背景图片, 高亮状态背景图片, 并设置其类型为 定制类型, 不要点上去 高亮状态变为半透明; 设置按钮高亮状态下的属性, 注意在 Control 中的...: 在弹出的对话框中设置 方法名称 changeColor, 类型为 UIButton, 事件为 Touch Up Inside, 传入的参数暂时设置为 Sender 这里需要将 按钮本身传回, 用于获取其父控件...:[UIColor redColor] forState:UIControlStateHighlighted]; 为高亮状态指定文字颜色; 3.设置背景图片 : ① 获取图片对象 : 使用 [UIImage
在iOS开发中,系统的UITableView可以用来创建表单视图,其界面的渲染与逻辑的处理需要开发者实现许多代理方法。...二、使用FXForms进行表单视图的创建 FXForms框架中提供了一个FXFormViewController视图控制器类,开发者可以直接编写继承于这个类的ViewController...开发者可以为节点配置类中的每一个属性提供一个约定好的方法,在方法中对此属性对应的节点进行配置,这个约定好的方法名需要与属性对应,其格式是使用属性名加上Field,示例如下: @implementation...如果设置为@NO,则会在新的视图控制器中展示 UIKIT_EXTERN NSString *const FXFormFieldInline; //对于数组类型的节点,设置是否支持排序 设置为@YES则为支持排序...四、关于自定义视图控制器 如果开发者的视图控制器并不是继承于FXFormViewController,也可以使用FXForms来快捷的创建表单视图,开发者自定义的视图控制器需要遵守FXFormControllerDelegate
API NOTE 查看UISlider学习更多关于在你的代码中定义滑动条的内容。...一个滑动条: 由一个水平的轨迹和一个滑动点(一个用户可以滑动的圆形控件)组成 可以包含传达左边与右边值的意义的图片 在最小值(一般在左边)和滑动点之间的轨迹部分填充颜色 使用滑动条来给用户对他们可选值的细粒度控制或者当前进程的操作...如果它增加了值,为滑动条创建自定义的外观。...比如一个控制图片尺寸的滑动条,可以在最小值那边显示一个非常小的图片,在最大值那边显示一个非常大的图片。...为滑动点定义一个不同的外观,这依赖于滑动点在哪一边以及控件在什么状态 不要使用滑动条来显示音量控件。如果你需要显示一个音量滑动条,当你使用MPVolumeView的时候可以使用系统提供的音量滑动条。
领取专属 10元无门槛券
手把手带您无忧上云