首页 > 其他分享 >iOS中容易用错的常用知识点

iOS中容易用错的常用知识点

时间:2023-05-31 17:25:11浏览次数:46  
标签:知识点 用错 view iOS 视图 myButton UIButton btn UIView

坐标系转换 ios中的坐标系有三种 视图坐标系:原点(0,0)视图的左上角 窗口坐标系:原点(0,0)窗口的左上角 世界坐标系:原点(0,0)游戏中世界的原点
平时开发中经常会遇到转UIWindow坐标问题,如:已知一个UI控件的坐标,把它转换到UIWindow时,它对应的UIWindow坐标是什么? 苹果提供了一套相关的转换方法,但是它缺少了坐标在转换时会涉及到三个UIView, 方法中没有对这3个UIView关系的描述,这在使用坐标转换时就很容易搞迷糊了。

open func point(inside point: CGPoint, with event: UIEvent?) -> Bool

open func convert(_ point: CGPoint, to view: UIView?) -> CGPoint

open func convert(_ point: CGPoint, from view: UIView?) -> CGPoint

open func convert(_ rect: CGRect, to view: UIView?) -> CGRect

open func convert(_ rect: CGRect, from view: UIView?) -> CGRect
举例如下:
override func viewDidLoad() {
    super.viewDidLoad()
    
    view.addSubview(myButton)
    
    let center2 = view.convert(myButton.center, to: UIApplication.shared.keyWindow)
}
下面这件代码的意思是将self.view下面的子视图self.myButton的中点从它的视图坐标系中转换到keyWindow的窗口坐标系中时,得到的坐标是什么。 这句代码种涉及到的三个UIView: self.view, self.myButton, keyWindow。其中self.myButton是self.view的子视图。这层关系需要清楚,就避免迷糊了。
view.convert(myButton.center, to: UIApplication.shared.keyWindow)

 

自定义UIButton中Image和title的位置关系 UIButton中Image和title的位置坐标是可以自定义调整的,弄懂了下面这些就不用经常在UIView里套Image和Label来自定义视图了。
前置条件 手写UIButton时,ButtonType选择custom,style设置为Default(这个没有找到设置的地方,在xib上有这项,实际上手动创建的代码style默认就是Default) 使用xib创建的UIButton时,把它的plain改成Default。ButtonType设置成custom。 就是截图中的上面2项: 已知概念 1.UIButton中的image和image现在默认是上下,左右居中,并且image和title在水平方向是挨着的。
btn.contentEdgeInsets = .zero
btn.imageEdgeInsets = UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 25)
btn.titleEdgeInsets = UIEdgeInsets(top: 2, left: 12, bottom: 2, right: 2)
2.上面btn相关的EdgeInset值的设置的效果 是和css中的padding内边距效果一致的。即:值>0内容向内缩,值<0内容往外扩展。 3.image和title具有中间挨着的特性,默认情况下,无论image左移多少,title都会跟随左移多少,以满足image和title中间挨着的特性。 4.对于设置的EdgeInset中的偏移量是相对于image和title在没有设置任何偏移量时的默认状态的偏移。
了解了上面这些概念就可以愉快的自定义UIButton中image和lable的位置了。
let btn = UIButton(type: .custom)
btn.frame = CGRect(x: 100, y: 80, width: 40, height: 20)
btn.setTitleColor(.white, for: .normal)
btn.setTitle("jack", for: .normal)
btn.titleLabel?.font = UIFont.systemFont(ofSize: 10)
btn.setImage(UIImage.init(named: "loveHeat"), for: .normal)
btn.backgroundColor = UIColor.black.withAlphaComponent(0.6)
btn.layer.cornerRadius = 4;
btn.layer.masksToBounds = true;
btn.imageEdgeInsets = UIEdgeInsets(top: 3, left: 2, bottom: 1, right: 25)
btn.titleEdgeInsets = UIEdgeInsets(top: 0, left: 1, bottom: 0, right: 0)
btn.isUserInteractionEnabled = false

 

标签:知识点,用错,view,iOS,视图,myButton,UIButton,btn,UIView
From: https://www.cnblogs.com/zhou--fei/p/17446772.html

相关文章

  • Vue07-Axios
    Axiosaxios是一个网络请求相关的库。axios:ajaxi/osystem使用axios编写的网络请求代码,可以运行在浏览器端,也可以在Node环境中运行。01.支持的请求方式axios(config)axios.request(config)axios.get(url[,config])axios.delete(url[,config])axios.head......
  • uniapp 常用知识点
    1、原生导航栏(顶部)动态修改titleuni.setNavigationBarTitle({title:"賬號名稱"})2、原生导航栏(顶部)左边箭头默认是返回上一级,监听动态返回指定页面与data()同级//监听原生导航栏的发回按钮onBackPress(options){if(options.from==='navigateBack'){r......
  • Axios三层封装
    Axios三层封装在实际项目中axios都是要经过封装再使用的,企业级项目一般都是三层封装1.工具函数层对axios工具进行增强,如:设置公共的请求服务器、设置请求拦截器、设置响应拦截器…创建一个文件夹utils,用来放axios。创建文件,随便取名,这里我取request.js引入importaxiosf......
  • iOS网络数据指标收集
    在平时开发中有时候需要收集网络不同阶段性能数据来分析网络情况,下面总结了2种收集方式。1.通过NSURLSession提供的代理方法收集2.通过NSURLProtocol做统一网络请求拦截收集通过NSURLSession提供的代理方法收集当NSURLSessionTask完成并返回响应时,NSURLSession会收集一些关......
  • Unity发布IOS发布Android版本出现屏幕问题 UGUI半屏被压缩 另一半黑屏
    项目场景:用Unity做的app发布的ios和Android版本,ui做屏幕自适应,来适配多机型,unity版本是2019.4,用的UGUI。问题描述:极个别机型有个偶发的问题,就是在app息屏,再开屏的时候,会出现半边屏幕被压缩,半边屏幕黑屏的问题,但是ui交互的位置还是正常的,bug效果图如下:跟这张图一样的<hrstyle="bor......
  • Unity,发布ios和Android的包,UGUI,异形屏适配问题。
    Unity,发布ios和Android的包,UGUI,异形屏适配问题。@TOC<hrstyle="border:solid;width:100px;height:1px;"color=#000000size=1">前言unity发布移动端需要做ui的适配,我们用的是UGUI,暂且提供一种我们自己的ui适配解决方案,包含异形屏的。<hrstyle="border:solid;width:100px;h......
  • IOS学习-UILabel
    自己学习用5个常用属性(1)font属性:设置显示文本的字体(2)size属性:设置显示文本的字体(3)backgroundColor属性:设置背景颜色UITextAlignmentLeftUITextAlignmentCenterUITextAlignmentRight(4)textColor:设置文本的颜色(5)adjustFontSizeToFitWidth:设置YES,表示文本自适应大......
  • IOS学习-UIButton
    常用的属性UIButtonTypeUIButtonTypeCustomUIButtonTypeRounedRect一个圆角矩形样式的按钮UIButtonTypeDetailDisclosure一个详细纰漏按钮UIButtonTypeInfoLight一个信息按钮,有一个浅色背景UIButtonTypeInfoDark一个信息按钮,有一个黑暗的背景UIButtonTypeContactAdd一个联系人......
  • IOS学习-UITextView
    《iOS8开发指南》,自己总结用UITextView文本视图(UITextView)与文本框类似,差别在于文本视图可显示一个可滚动和编辑的文本块,供用户阅读或修改。仅当需要的的输入很多时,才应使用文本视图。AttributeInspector分为3部分(TextField,control,view)(1)Text:设置文本框的默认文本(2)......
  • axios 或 @nestjs/axios 错误地应用 npm config proxy
    npmproxy$npmconfiggetproxyhttp://127.0.0.1:25378/如果你的npm设置了如上代理,那么当请求本地服务时,应该会出现代理错误(通常是502响应):import{HttpService}from'@nestjs/axios';@Injectable()exportclassForwardService{@Inject()privatereadonlyhtt......