iOS开发之oc(十六)--Foundation(1)结构体

(一)要掌握这些的运用

 NSRange(location length) ---范围                                    range:范围

 NSPoint\(相当于)CGPoint ---点

 NSSize\CGSize   ---尺寸

 NSRect\CGRect (CGPint CGSize) ---相当于一个矩形

其实,看官方文档更能清楚,这些的用法,需要声明方法就Jump to去看,在此,仅仅列出简单用法,作为了解

(二)代码示例

1.

void range()
{
    // @"i love oc"      // love的范围
    
    //NSRange r1 = {2, 4};     // 不用
    //NSRange r2 = {.location = 2, .length = 4};     // 不用
    //NSRange r3 = NSMakeRange(2, 4);  // 需要掌握,我们一般用这个,上面的两个可读性差不用
    NSString *str = @"i love oc";
    
    // 查找某个字符串在str中的范围
    // 如果找不到,length=0,location=NSNotFound==-1
    NSRange range = [str rangeOfString:@"java"];
    NSLog(@"loc = %ld, length=%ld", range.location, range.length);
}

2.

void psr()
{
    CGPoint p1 = NSMakePoint(10, 10);
    NSPoint p2 = CGPointMake(20, 20);    // 最常用
    
    NSSize s1 = CGSizeMake(100, 50);
    NSSize s2 = NSMakeSize(100, 50);
    CGSize s3 = NSMakeSize(200, 60);
    
    CGRect r1 = CGRectMake(0, 0, 100, 50);   // 最常用(下面两个作为了解)
    
    CGRect r2 = { {0, 0}, {100, 90}};
    
    CGRect r3 = {p1, s2};
    
    // 使用CGPointZero等的前提是添加CoreGraphics框架
    CGRect r4 = {CGPointZero, CGSizeMake(100, 90)};
        
    // CGSizeZero
    // CGRectZero
    
    // 表示原点
    // CGPointZero == CGPointMake(0, 0)
    
    
    // 将结构体转为字符串
    //NSString *str = NSStringFromPoint(p1);
    
    //NSString *str = NSStringFromSize(s3);
    
    NSString *str = NSStringFromRect(r1);
    
    NSLog(@"%@", str);
    
    // 这样一个个打印很麻烦。所以,我们会---将结构体转为字符串
    // NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);
}

// CGRect myRect(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
//{
//    CGRect rect;
//    rect.origin.x = x;
//    rect.origin.y = y;
//    rect.size.width = width;
//    rect.size.height = height;
//    
//    return rect;
//}

3.了解

#import <Foundation/Foundation.h>

int main()
{
/*
 NSRange(location length)
 NSPoint\(相当于)CGPoint
 NSSize\CGSize
 NSRect\CGRect (CGPint CGSize)
 */
    
    // 使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架
    
    // NextStep  Foundation 
    
    // 比较两个点是否相同(x、y)
    BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
    //CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)
    //CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)
      
    // x (50, 150) y (40 , 90)
    BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));
    
    NSLog(@"%d", b2);
    
    return 0;
}

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。