1
我正試圖將一個簡單的粒子效果疊加添加到我的UIViewController
實例之一中。我跟着我發現的幾個教程,但他們都沒有處理視圖控制器,他們的故事板僅僅是一個視圖,沒有控制器,這是令人困惑的。CAEmitterLayer在我的視圖控制器中不可見
這是我的代碼,我只是想弄明白爲什麼我看不到粒子效果。我錯過了什麼?視圖本身肯定存在並且添加了(如果我改變它的顏色或我可以看到它的東西),它只是空的,並沒有顯示任何粒子效果。引用的圖像文件絕對在項目和目標中,那麼我在這裏做了哪些錯誤?我是否需要以某種方式將CAEmitterLayer
添加到rainView
?這部分教程沒有提供任何幫助!
RainfallOverlay.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface RainfallOverlay : UIView {
CAEmitterLayer *rainEmitter;
}
@end
RainfallOverlay.m
#import "RainfallOverlay.h"
@implementation RainfallOverlay
- (void) awakeFromNib
{
rainEmitter = (CAEmitterLayer *) self.layer;
rainEmitter.emitterPosition = CGPointMake(160, 100);
rainEmitter.emitterSize = CGSizeMake(10, 10);
rainEmitter.renderMode = kCAEmitterLayerAdditive;
CAEmitterCell *rain = [CAEmitterCell emitterCell];
rain.birthRate = 200;
rain.lifetime = 2.0;
rain.lifetimeRange = 1.5;
rain.color = [[UIColor colorWithRed: 0.2 green: 0.4 blue: 0.8 alpha: 0.1] CGColor];
rain.contents = (id) [[UIImage imageNamed: @"Particles_rain.png"] CGImage];
rain.name = @"rain";
rain.velocity = 150;
rain.velocityRange = 100;
rain.emissionRange = M_PI_2;
rain.emissionLongitude = 0.025 * 180/M_PI;
rain.scaleSpeed = 0;
rain.spin = 0.5;
rainEmitter.emitterCells = [NSArray arrayWithObject: rain];
}
@end
ViewController.m viewDidLoad中
RainfallOverlay *rainView = [[RainfallOverlay alloc] initWithFrame: CGRectMake(0, 0, 320, 250)];
[rainView setUserInteractionEnabled: NO];
[self.view bringSubviewToFront: rainView];
[self.view addSubview: rainView];
完全,得到它,三江源:) – Luke 2013-03-12 14:26:46