CGRect使用技巧

手把手教你用RV1103+SC3336摄像头DIY一个离线人脸门禁原型 本文详细介绍了如何利用RV1103芯片和SC3336摄像头构建离线人脸门禁系统。从硬件选型到算法优化,再到业务逻辑实现,提供了完整的DIY指南。重点讲解了RetinaFace和FaceNet算法在嵌入式系统中的移植与调优,帮助开发者快速实现高效、隐私安全的门禁解决方案。 阅读详情

在iOS开发中经常需要处理点,大小以及矩形,对应的数据结构分别为CGPoint,CGSize,CGRect,这些数据结构都是C结构体,定义分别如下:

CGPoint {
  CGFloat x;
  CGFloat y;
};
CGSize {
  CGFloat width;
  CGFloat height;
};
struct CGRect {
  CGPoint origin;
  CGSize size;
};

操作这些数据结构有一些方便的方法,总结如下:

1.创建CGPoint,CGSize,CGRect
CGSize size = CGSizeMake (10.0, 20.0);
CGPoint center = CGPointMake (60.0, 240.0);
CGRect bounds = CGRectMake (5.0, 10.0, 100.0, 200.0);

一些特殊情况
零点 CGPointZero; 即(x=0.0, y=0.0),等价于GPointMake(0,0);
零大小 CGSizeZero; 即(width=0.0, height= 0.0),等价于CGSizeMake(0,0);
零矩形 CGRectZero; 即((x=0.0,y= 0.9),(width=0.0,height=0.0)),等价于CGRectMake(0,0,0,0).
空矩形 CGRectNull; 取两个不相交矩形的相交区域会返回CGRectNull,一个矩形与CGRectNull的并集为原矩形。,使用CGRectIsNull判断一个矩形是否为CGRectNull。CGRectIsEmpty对CGRectZero和CGRectNull都返回true;
无限矩形 CGRectInfinite 具有无限区域的矩形,可使用CGRectIsInfinite进行判断。

2.判断两个点,大小,矩形是否相等
bool CGPointEqualToPoint (CGPoint point1, CGPoint point2);
bool CGSizeEqualToSize (CGSize size1, CGSize size2);
bool CGRectEqualToRect (CGRect rect1, CGRect rect2);

CGPoint,CGSize,CGRect的内部数据都是CGPoint,对于浮点数,由于可能存在舍入误差,不能直接判断两者是否相等,而应该判断两个值的差是否足够小。使用上述方法可以避免手工做这些判断,简化代码。

3. 获取矩形边界,中点坐标值,长宽

获取边界坐标值,即x,y的最大值与最小值。

CGFloat CGRectGetMinX(CGRect rect);
CGFloat CGRectGetMaxX(CGRect rect);
CGFloat CGRectGetMinY(CGRect rect);
CGFloat CGRectGetMaxY(CGRect rect);

获取中点坐标值,即x,y的中点

CGFloat CGRectGetMidX(CGRect rect);
CGFloat CGRectGetMidY(CGRect rect);

获取矩形长,宽

CGFloat CGRectGetWidth(CGRect rect);
CGFloat CGRectGetHeight(CGRect rect);
4.对称缩进CGRect
CGRect aRectangle = CGRectMake(0,0, 100, 200);
CGRect smallerRectangle = CGRectInset(aRectangle, 10, 20);
// result origin (10, 20) and size (80, 160)
5. 非对称缩进CGRect
CGRect rect = CGRectMake(0, 0, 100, 200);
UIEdgeInsets contentInsets = UIEdgeInsetsMake(10, 20, 30, 40);
CGRect result = UIEdgeInsetsInsetRect(rect, contentInsets);
//result origin(20,10) and size(40,160)
6. 调整小数像素CGRect到整数像素

将origin值向下调整到最近整数,size向上调整到最近整数,使生成的CGRect可以完全包含原来的CGRect.

CGRect rect = CGRectMake(5, 7.5, 50, 29);
UIEdgeInsets contentInsets = UIEdgeInsetsMake(10, 20, 30, 40);
CGRect result = CGRectIntegral(rect);
//result origin(5,7) and size(50,30)
7. 检查矩形内是否包含某点
CGRect enemyRect = CGRectMake(0, 0, 100, 200);
CGPoint hitPoint = CGPointMake(50, 50);
if(CGRectContainsPoint(enemyRect, hitPoint))    {
        // YES!
}
8.检查两矩形是否相交
CGRect playerRect = CCRectMake(200, 300, 10, 10);
    CGRect mineRect = CGRectMake(10, 10, 20, 20);
    if(CGRectIntersectsRect(playerRect, mineRect))    {
        // OUCH!
    }
9. CGRect与NSString 转换
CGRect rect = CGRectMake(0, 0, 100, 200);
   NSString *rectString = NSStringFromCGRect(rect))
   CGRect newRect = CGRectFromString(rectString);
10.CGRect与NSDictionary转换
CGRect rect = CGRectMake(0, 0, 100, 200);
CFDictionaryRef frameDictRef = CGRectCreateDictionaryRepresentation(rect);
NSDictionary*frameDict = [NSDictionary dictionaryWithDictionary:(NSDictionary*)frameDictRef]; // autoreleased
CFRelease(frameDictRef);
NSLog(@"%@", frameDict);

CGRect newRect;
CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)frameDict, &rect);
10. CGRect与NSValue转换

在NSArray,NSDictionary容器中只能存储Objetive-C对象,不能直接存储C结构体,所有需要存储矩形时,需要将其转换为NSValue值。

CGRect rect = CGRectMake(0, 0, 100, 200);
NSValue *value = [NSValue valueWithCGRect:rect];
CGRect newRect = [value rectValue];

参考:
CGGeometry Reference
CGRect Tricks
Rectangles, Part 1
Rectangles, Part 2
A potential pitfall of CGRectIntegral

物理AI重构自动驾驶供应链 | 传统Tier1盈利模式崩塌,纯算法/软硬一体双路线落地对比,助力智驾软件商业化与全场景模型迭代 2026年是自动驾驶物理AI规模化落地元年,行业彻底告别传统感知-预测-规划-控制的模块化分层开发范式,迈入以世界模型、物理规则推演、端到端动作生成为核心的全新技术阶段。不同于传统AI仅完成图像识别、目标检测的浅层感知任务,物理AI能够深度理解道路交通中的动力学约束、路面摩擦、车辆博弈、行人运动规律等真实物理逻辑,实现对复杂路况的时序推演与自主决策,从底层重构自动驾驶技术架构。技术迭代同步引发产业链颠覆性变革,沿用数十年的传统自动驾驶Tier1商业模式全面崩塌。 阅读详情

相关推荐

VS2022打包C#安装包(最新、最全)

VS2022打包C#安装包(最新、最全)

qq_37959253的博客 9890

cgrect和cgpoint的区别

每个视图都使用一个边框定义其界限。这个边框指定了视图的轮廓:其位置、宽度和高度。 我们使用Core Graphics结构宋定义边框矩形。对于边框,这通常表示由原点(CGPoint,x和y)和大小(CGsize,宽度和高度)组成的CGRect矩形。下面是这些类型的简要描述。 1.CGRect CGRect结构在屏幕上定义了一个矩形。它包含原点(rect.origi...

bengan的专栏 459

微信小程序如何集成EasyRTC实现零插件音视频通话?5步搞定完整接入流程

本文详细介绍了如何在微信小程序中集成EasyRTC SDK,实现零插件的实时音视频通话功能。通过5个关键步骤,包括环境配置、SDK初始化、核心功能实现、性能优化和问题排查,帮助开发者快速完成WebRTC技术在小程序中的落地应用,解决微信小程序原生不支持实时音视频通信的技术难题。

weixin_28340315的博客 142

CGRect

CGRect CGRect结构在屏幕上定义了一个矩形。它包含原点(rect.origin)和大小(rect.size)。需要了解以下CGRect函数。1、CGRectMake(origin.x,origin.y,size.width. Size.height)在代码中定义矩形。2、NSStringFromCGReot(someCGRect)把CGRect结构转变为格式化字符串。3、C...

weixin_30549175的博客 228

LangGraph实战:用Python异步构建智能客服多轮对话系统(附完整代码)

本文详细介绍了如何使用LangGraph框架和Python异步编程构建一个高性能的智能客服多轮对话系统。通过将对话流程建模为有向图,结合thread_id实现多用户对话隔离,并利用异步节点提升系统并发处理能力,有效解决了传统客服系统上下文遗忘与高并发瓶颈问题。文章提供了从环境搭建、状态管理、异步优化到复杂业务逻辑与部署的完整实战代码。

weixin_29055137的博客 149

GeoXCP:可解释人工智能中空间解释的不确定性量化

GeoXCP: uncertainty quantification of spatial explanations in explainable AI提出基于保形预测(conformal prediction)的不确定性量化框架——地理空间解释保形预测(GeoXCP),将空间依赖纳入建模过程,生成具有校准不确定性估计的空间自适应解释。通过大量模拟实验和真实世界数据集验证,GeoXCP在不同地理空间场景中能提供可靠解释并有效量化不确定性,推动可解释地理空间机器学习的发展,帮助决策者评估模型驱动洞察的可信度。

May the Force be with you 242

【iOS】CGRectMake 梳理

CGRectMake 梳理

微信公众号: 后端码匠 1057

手把手教你学Simulink——基于Simulink的蚁群算法路径规划仿真建模示例

路径规划是机器人导航系统中的核心任务之一,旨在为机器人找到一条安全且高效的路径,使其能够从起点到达目标点,同时避免与障碍物发生碰撞。在开始之前,需要定义工作环境(例如地图),包括起点、终点以及可能存在的障碍物位置。通过本指南,我们介绍了如何基于Simulink结合MATLAB实现蚁群算法的路径规划仿真建模。

MHD0815的博客 221

<iOS>CGRect常见方法和几个CGRect函数

主题:CGRect,每个视图都使用一个边框定义其界限。这个边框指定了视图的轮廓:位置、宽度和高度 内容:对于边框,通常表示由原点(CGPoint,x和y)和大小(CGSize,宽度和高度)组成的CGRect矩形。下面简单描述。 1、CGRect a、CGRect结构在屏幕上定义了一个矩形,它包含原点(rect.origin)和大小(rect.size)。需要了解以下CGRect函数。 b、

快乐出发 4167

Python 中 dpkt 库的详细使用指南(强大的 Python 数据包解析库)

dpkt 是一个功能强大的 Python 网络数据包解析库,支持解析和构造以太网、IP、TCP/UDP 等多种协议的数据包。其核心功能包括解析各层协议头部、读写 pcap 文件、构造自定义数据包及分析 HTTP 流量等。dpkt 提供简单易用的 API,适用于网络分析、安全研究和流量监控场景。优化技巧包括数据包过滤、批量处理和选择性解析以提高性能,常见问题如数据不完整或协议识别错误可通过异常处理和字段验证解决。典型应用场景涵盖协议分析、网络调试和自定义数据包生成。

数据知道的博客 1万+

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 284

iOS小技巧---打印CGRect时用NSStringFromCGRect

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34366546的博客 101

数据处理和分析之数据聚类:层次聚类(Hierarchical Clustering):单链接层次聚类方法

单链接层次聚类(Single-Linkage Hierarchical Clustering)是凝聚型层次聚类的一种,它基于数据点之间的最小距离来定义聚类间的相似性。在单链接层次聚类中,两个聚类之间的距离定义为这两个聚类中任意两个数据点之间的最短距离。这种聚类方法倾向于形成链状或线性的聚类,因为聚类的边界是由最远的数据点决定的,而不是聚类的平均或中心位置。单链接层次聚类通过计算簇间最近点的距离来决定簇的合并,这种方法简单直观,但可能导致簇的形状不规则,尤其是在数据点分布不均匀的情况下。

2401_87715305的博客 1441

020_swifit_CGRect相关api

import UIKit let rect=CGRect(x: 0, y: 0, width: 100, height: 100) rect.debugDescription let origin=CGPoint.zero let size=CGSize(width: 100, height: 100) let secondRect=CGRect(origin: origin, size: s...

丿灬安之若死 197

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

iOS开发小技巧--UIButton的另一种布局方法(第一种在layoutSubViews方法中,这一种利用苹果提供的两个返回CGRect的方法)...

weixin_34297300的博客 193

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

CGRect 的使用

1、常用创建方法               (1) 创建一个坐标点                CGPoint point = CGPointMake(10, 10);      (2)创建一个矩形        CGRect rect = CGRectMake(10, 10, 100, 100);      (3)创建一个尺寸        CG

chenchen910213的专栏 596

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

iOS 输出CGRect格式的数据

iOS编程中,输出某个控件的frame时等这种CGRect格式的数据时,可以这样写: NSLog(@"%@",NSStringFromCGRect(view.frame)); 将CGRect类型的数据转成NSString再输出就可以了。 ...

chongcuan4403的博客 150

CGPoint,CGSize,CGRect转NSString以及CGRect的一些便捷实用方法

打印代码小技巧 UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UIKIT_EXTERN NSString *NSStringFromCGVector(CGVector vector); UIKIT_EXTERN NSString *NSStringFromCGSize(CGSize size); UIKIT_EXT...

weixin_30333885的博客 238

CGRect系列应用详解

//1.类型转换     CGRect frame = CGRectMake(0, 0, 20, 20);//矩形尺寸     NSString * str = NSStringFromCGRect(frame);//string转化为CGRect     NSString * str2 = @"{{0, 0}, {30, 30}}";     CGRect frame2 =

XingXingRainLove的博客 835

CGRect相关工具函数

NSStringFromCGRect(aCGRect): CGRectFromString(aString):如果把视图的框架以字符串的形式放在NSUserDefaults里面,那么该方法可以将其转回CGRect [NSValue valueWithCGRect:rect] [NSValue对象 CGRectValue] CGRectInset(aRect,xinset,yinset):可...

weixin_30730151的博客 159

关于CGRect

CGRect结构在屏幕上定义了一个矩形。它包含原点(rect.origin)和大小(rect.size)。需要了解以下CGRect函数。1、CGRectMake(origin.x,origin.y,size.width. Size.height)在代码中定义矩形。如:[imageView setFrame:CGRectMake(1,1,1,1)];如果获取它的本身框架是, CGFloat x(y)...

weixin_30611509的博客 82

【iOS开发】iOS CGRectGetMaxX/Y 使用

在iOS的界面布局中我们可以使用CGRectGetMaxX 这个方法来方便的获取当前控件的x坐标值+宽度的数值,这样便可以方便布局。 同理CGRectGetMaxY是获取y坐标值+控件高度的值,当然这个系列的方法还有很多大家可以试下。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...

aewak462262的博客 194

objective-c 中数据类型之中的一个 几何数据类型(CGPoint,CGSize,CGRect)

// CGPoint 结构体数据原型, 用于声明一个点; /* Points. */ struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint; typedef CGPoint NSPoint; // 使用方法;          // 1. 声明一个CGPoint变量,初始化时赋值方...

weixin_34000916的博客 116

编程技巧 - 9

编程技巧 - 9

iosfighterlb - HeyYou 295

CGRECT

CGGeometry参考定义几何结构和功能,操作简单。数据结构中的一个点CGPoint代表在一个二维坐标系统。数据结构的位置和尺寸CGRect代表的一个长方形。数据结构的尺寸CGSize代表宽度和高度。 1、创建一个几何原始数值       CGPoint  CGPointMake(CGPointA,CGPoint B)                   返回一个指定坐标点  

u012490953的专栏 958
上一篇: IOS7状态栏StatusBar官方标准适配方法
下一篇: UIView 的 autoresizingMask 属性 详解。
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值