ios开发一般思路

本文详细介绍了如何在iOS应用中实现飘落的雪花效果。包括需求分析、功能分解、类设计及具体实现步骤。通过定时器控制雪花创建与飘落,并进行有效的内存管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 需求分析

功能分析(需要设计那些类)

类设计(和方法的设计)

雪花效果(功能的实现思路)

 思路:

A.需求分析

  我们想要达到一种什么样的效果?(同时画出效果图片)

      我们希望雪花从上到下飘落下来(飘飘洒洒)

     在程序中就是雪花图片从上到下的飘落;


如右图就是我们想要达到的效果.(需求分析);

B.功能分析

目前来看,程序中能够表现出现实世界的东西大多是图片或者像素色的(虚拟)

又我们的需求可知,我们需要虚拟背景和雪花以及雪花有到无飘落的过程

.

1.我们需要贴背景图

2.我们需要贴雪花的图片

3.雪花需要从上到下的飘落

4.雪花需要被创建和销毁.(其实雪花不销毁再短时间内事可以的,但是考虑到内存的大小,一个雪花对象还是要被销毁的.)

C.类设计(类分析)

1.由功能分析我们可以知道,这个功能只设计成一个类便很好

so! 我们可以设计一个snow类,

 c1方法设计

1.createBackGroundImage //func1

2.createSnow //func2

3.创建了雪花以后雪花还要飘落,需要在设计一个action方法

fly//fun3

4.deleteSnow// func4

======>>>>>>等等,create delete 这些关键词,好吧,我们还应该设计一个manager类来控制create和delete

4SnowManager

{管理方法一般是用来对对象进行正删改查的.既然是正删改查一般来讲是需要一个来保存对象指针的对象来存储这些对象指针的,目前可以用来保存对象的对象有 数组,字典,链表,图,集合等,通过一些逻辑判断在何时创建,在何时销毁.}

c2.画图uml图就好.

 

class:snow
createBackGround():void
createManager():void
createSnow():void
SnowFly():void
deleteFly():void

snow.h类图


备注:上面的只是最简单地功能的分析于实现

1.类间关系:

    a.封装

    b.继承

    3.实现(实现里面很经典的一个是代理).

2个人认为设计模式其实也是类间的关系.已集成为主(用java编程的术语就是面向接口编程,对应我们的iOS编程就是protol编程) 观察者模式,工厂模式,header first 设计模式

在实现action时 我们经常用的是监听方法

例如button控件是一个最基本的监听方法,(跳转).

源码:

appdelegate.h

#import <UIKit/UIKit.h>


@interface KGAppDelegate : UIResponder <UIApplicationDelegate>


@property (strong,nonatomic) UIWindow *window;


@end

appdelegate.m


#import "KGAppDelegate.h"

#import "KGSnow.h"

@implementation KGAppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.

    self.window.backgroundColor = [UIColor whiteColor];

    

    //创建一个雪花类的对象,然后将这个对象加载到屏幕上

    KGSnow * snow =  [[KGSnow alloc]init];

    [self.window addSubview:snow];

    

    

    [self.window makeKeyAndVisible];

    returnYES;

}

snow.h

#import <UIKit/UIKit.h>


@interface KGSnow : UIView


@end

snow.m

#import "KGSnow.h"


@implementation KGSnow

{

    //创建一个用来管理雪花的数组

    NSMutableArray * _sonws;

}



- (id)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        // Initialization code

        

        //初始化数组,一定不要忘了

        _sonws = [[NSMutableArray alloc]init];

        

        //通过获取屏幕的大小来初始当前雪花类对象的大小

        self.frame = [UIScreen mainScreen].bounds;

        

        //设置背景图片

        [self setBackgroundImage];

        

        //启动定时器,开始下雪

        [self startTimer];

        

    }

    returnself;

}

//这个方法用来去设置背景图片

-(void)setBackgroundImage

{

    UIImage * image = [UIImage imageNamed:@"1_24.jpg"];

    self.backgroundColor = [UIColor colorWithPatternImage:image];

}


//启动定时器的方法

-(void)startTimer

{

    //使用定时器去管理雪花

    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(managerSnows) userInfo:nil repeats:YES];

}

//这个方法,是用来去管理雪花

-(void)managerSnows

{

    [self creatSnow];

    [self fly];

    [self memoryManager];

}

//创建雪花

-(void)creatSnow

{

    int x = arc4random() %310;

    UIView * view = [[UIView alloc]initWithFrame:CGRectMake(x,20, 20,20)];

    view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"未命名"]];

    //将雪花加到背景图片

    [self addSubview:view];

    //将雪花加到数组中,方便后面的管理

    [_sonws addObject:view];

}

//让雪花飞起来

-(void)fly

{

    for (UIView * snowin _sonws) {

        //获取当前雪花的中心点

        CGPoint center = snow.center;

        center.y = center.y + arc4random() % 5;

        center.x = center.x + arc4random() % 3 - 1;

        snow.center = center;

    }

}

//进行内存管理

-(void)memoryManager

{

    for (int i =0;i<_sonws.count;i++) {

        UIView * snow  = [_sonws objectAtIndex:i];

        if (snow.center.y >450) {

            //如果大于450,那么就不让他去飘了

            [_sonws removeObject:snow];

            //如果要从屏幕上将雪花删除掉,那么需要从屏幕上去移除掉这个视图

            [snow removeFromSuperview];

            

            i--;

        }

    }

}





@end


第二部分

调bug

1.根据生存周期来进行调bug,最经典的就是nslog();这也是我最经常使用的方法

2.设置断点

3.lldb的方式,就是利用控制台,和条件语句来进行 

例如.po 对象名,  r 等等






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值