iOS开发 - 抽签效果的实现

引言:

一个类似抽奖效果的实现.


效果图

代码:

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UILabel *nameL;
@property (weak, nonatomic) IBOutlet UIButton *button;
@property (nonatomic, strong) NSMutableArray *names;
@property (nonatomic, strong) NSTimer *timer;
@property (nonatomic, assign) BOOL isStart;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.names = [NSMutableArray arrayWithObjects:@"刘一", @"陈二", @"张三", @"李四", @"王五", @"赵六", @"孙七", @"周八", @"吴九", @"郑十", @"刘一1", @"陈二1", @"张三1", @"李四1", @"王五1", @"赵六1", @"孙七1", @"周八1", @"吴九1", @"郑十1", nil];
}

#pragma mark - 抽签按钮
- (IBAction)changeNameClick:(id)sender {
    
    if (self.names.count != 0) {
    
        
        _isStart = !_isStart;
        
        if (_isStart) {
            
            [self.button setTitle:@"停止抽签" forState:(UIControlStateNormal)];
            
            self.timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(changeName) userInfo:nil repeats:YES];
            [[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSDefaultRunLoopMode];
            
            
            
        }else{
            [self.button setTitle:@"开始抽签" forState:(UIControlStateNormal)];
            [_timer invalidate];
            
            // 如果要 限制每人只能抽取一次 要使用下面的代码
//            [self.names removeObjectAtIndex:self.index];
//            
//            for (NSString *name in self.names) {
//                NSLog(@"%@", name);
//            }
//            NSLog(@"%ld", self.nowNames.count);
        }
    }else{
        
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"所有人都已抽到" preferredStyle:(UIAlertControllerStyleAlert)];
        
        UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];
        
        [alert addAction:action];
        
        [self.navigationController pushViewController:alert animated:YES];
    }
}
#pragma mark - 随机抽取名字
- (void)changeName {
    
    if (self.names.count != 0) {
        NSInteger index = arc4random() % self.names.count;
        
        NSString *name = [self.names objectAtIndex:index];
        
        _nameL.text = name;
    }
}

demo下载: RandomDrawDemo


GitHub: https://github.com/LiCheng244/LCUtils
个人博客: http://www.licheng244.com/


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,466评论 25 708
  • “我行过许多地方的桥,看过许多次数的云,喝过许多种类的酒,却只爱过一个正当最好年龄的人。” 用这段话来形容李向前对...
    流涓阅读 1,003评论 0 2
  • 烈日渐退,余晖四起,清风袭来,远处鸟鸣窈窕,纷纷愉快的飞行于辽阔的空际,或嬉戏,或啄食,或追逐。突然,刚刚还在熟睡...
    唐迎宸阅读 267评论 2 0
  • 基本的不需要混淆的 实体类 Butter Knife Retrofit RxJava RxAndroid Gson...
    风染墨阅读 1,276评论 0 1
  • 立春了,好像春天来了 她却又感觉到似是恶寒围身的寒冷 她好想和自己内心的小鬼做个交易 可不可以,不要为了任何人糟践...
    二念阅读 294评论 0 1