IOS 点滴记录
来源:互联网 发布:粮食行业数据体系现状 编辑:程序博客网 时间:2024/06/05 19:28
1.IOS改变摄像机倍数:修改AVCaptureDevice对象的videoZoomFactor值
注:在设置前要通知AVCaptureSession对象,使用beginConfiguration方法,设置后,使用commitConfiguration方法提交。
AVCaptureSession *session = [[AVCaptureSession alloc] init]; AVCaptureDevice *camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; [session beginConfiguration]; camera.videoZoomFactor = 3.0; [session commitConfiguration];
但是使用这种会卡屏,如果想连贯性,可以使用锁:
NSError *error; AVCaptureDevice *camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; [camera lockForConfiguration:&error]; camera.videoZoomFactor = zoom; [camera unlockForConfiguration];这样会连贯起来,譬如通过手势缩放来改变摄像头变焦倍数。
2.BitCode
今天真机编译时,报了一个错,是bitcode的错误“(xxx.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)”
去网上查了下,是因为我引用的第三方库不支持bitcode,bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化我们程序的二进制文件,而不需要我们重新提交一个新的版本到App store上。当我们提交程序到App store上时,Xcode会将程序编译为一个中间表现形式(bitcode)。然后App store会再将这个botcode编译为可执行的64位或32位程序。它是后期便于app优化的。
当我们引用的 第三方库不支持bitcode时,两种方式:1.引用的第三方库rebulid重编译为支持bitcode的,再引用;2.当前工程改为不支持bitcode。在Build Settings 搜bitcode,将Build Options中的Enable Bitcode改为No.也就是要么让你的第三方库支持,要么target关闭bitcode支持。
另,从其他文章看到的内容:
iOS:bitcode是可选的。
watchOS:bitcode是必须的。
Mac OS:不支持bitcode。
注:如果开启了bitcode,在提交包时,也会有个bitcode选项
3.使用UISlider设置明亮度
- (IBAction)onBrightnessChanged:(id)sender {
UISlider *slider = (UISlider *)sender;
[[UIScreen mainScreen] setBrightness:slider.value];
}
4.故事板中有时设置约束为0但是显示出来,并没有贴边,是因为约束相对于margin而言,添加约束时,可以把“Constrain to margins”勾选去掉。
5.有时viewDidLoad里获取view大小时或添加CALayer大小时,view的大小是(0,0)或者小或者大,可以改在viewDidLayoutSubviews中执行,因为在viewDidAppear中页面才准备好。但是viewDidLayoutSubViews每次addSubView,重布局时都会调用,所以addSubView或addSubLayer, new等不要在这里面,否则会多次定义添加。
6.UITextField 字数限制
UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
}
7.改变UITabBarController中tabbar的高度。(不仅要改tabbar高度,还要改上面view的高度)(self为UITabBarController对象)
CGSize originSize = self.view.frame.size;
self.tabBar.frame = CGRectMake(0, originSize.height - 40, originSize.width, 40);
UIView *transitionView = [self.view.subviews objectAtIndex:0];
transitionView.frame = CGRectMake(0, 0, originSize.width, originSize.height - 40);
8.代码判断设备是ipad还是iphone,[[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone
9.页面添加画布后,原本故事板上面布局的subView被覆盖,可以将该subView放到最上层,[superView bringSubviewToFront:subView];
10.UITextField点击return,关闭键盘,实现UITextFieldDelegate,绑定,
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
11.UITextField和UITextView点击背景关闭键盘,实现对应Delegate,绑定,
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[_textView resignFirstResponder];
[_textField resignFirstResponder];
}
12.static有些细节记不清了,这里简单写下,IOS在@implementation外定义的变量都是全局变量:
①加static的只能在源文件中调用,类关闭后再次进入依然有效,其他类不能直接通过类名调用,但可以通过方法修改;
②不加static的可以在所有文件中访问,这种命名必须唯一,才能区分与其他源文件中的全局变量,否则会报错
注:全局变量只在应用启动时加载一次,nil或初期值,默认为0,生命周期和程序相同。
13.ios应用设置可通过iTunes共享documents下文件,在info.plist中添加Application supports iTunes file sharing设置为YES.(UIFileSharingEnabled)
14.sqlite 文本拼接使用“||”
- IOS 点滴记录
- iOS之Xcode设置点滴记录(一)
- iOS之Xcode设置点滴记录(二)
- 记录点滴
- 点滴记录
- 记录点滴
- 点滴记录
- 记录点滴
- 点滴记录
- 记录点滴
- 记录点滴
- 记录点滴
- 记录点滴
- 记录点滴
- 点滴记录。
- 记录点滴
- 记录点滴
- 记录点滴
- 事件分发和事件传递
- Spring事务传播机制小记
- js 从字符串中选取数字并相加
- deployment assembly
- CentOS下配置软RAID
- IOS 点滴记录
- activiti-explorer部署中文流程报错:Error parsing XML
- 主题模型-LDA小结
- Android开发跟随手指的小球Demo
- maven能帮我们做什么
- How to debug kernel with QEMU-KVM
- zookeeper原理(转)
- poj 3667 Hotel 区间合并
- 直接把View Controller的view addSubview到另一个View,则不会调用viewDidAppear viewWillAppear