【问题标题】:how to get set fixed colors in array iOS?如何在数组 iOS 中设置固定颜色?
【发布时间】:2017-05-03 10:22:04
【问题描述】:

您好,我尝试了随机颜色,但每次都需要静态颜色

 CGFloat red = arc4random() % 255 / 255.0;
    CGFloat green = arc4random() % 255 / 255.0;
    CGFloat blue = arc4random() % 255 / 255.0;
    UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
    NSLog(@"%@", color);

谢谢

【问题讨论】:

  • 将您的颜色存储在全局范围内,以便在生成后使用
  • 可以在info.plist中设置静态颜色
  • @Dev_Tandel 如何让这个循环或其他东西
  • 不清楚您的要求。您说您想要“随机”和“每次都使用静态颜色”,然后在 cmets 中说“如何让这个循环或其他东西”。你想要的最终结果是什么?一组随机颜色?
  • 另外,您想要 Swift 答案还是 Objective-C?您的标签使其不清楚,因此两者都给出了答案。

标签: ios objective-c arrays colors


【解决方案1】:

先这样尝试创建一个plist文件color.plist

创建一个从 info.plist 中获取颜色数组的函数

func fetchColorDataArray()->[String]{

    if let path = Bundle.main.path(forResource: "color", ofType: "plist") {
        if let color = NSArray(contentsOfFile: path) {
            return color as! [String]

        }
    }
    return []
}

你可以调用这个方法

var colorArray = [String]()
colorArray = self.fetchColorDataArray()

【讨论】:

    【解决方案2】:

    以这种方式添加UIColor的扩展名:

    import Foundation
    import UIKit
    
    extension UIColor{
        class func colorFromRGB(_ r: Int, g: Int, b: Int) -> UIColor {
            return UIColor(red: CGFloat(Float(r) / 255), green: CGFloat(Float(g) / 255), blue: CGFloat(Float(b) / 255), alpha: 1)
        }
    
        class func palette() -> [UIColor]{
            let palette = [
                UIColor.colorFromRGB(85, g: 0, b: 255),
                UIColor.colorFromRGB(170, g: 0, b: 170),
                UIColor.colorFromRGB(85, g: 170, b: 85),
                UIColor.colorFromRGB(0, g: 85, b: 0),
    
                UIColor.colorFromRGB(255, g: 170, b: 0),
                UIColor.colorFromRGB(255, g: 255, b: 0),
                UIColor.colorFromRGB(255, g: 85, b: 0),
                UIColor.colorFromRGB(0, g: 85, b: 85),
    
                UIColor.colorFromRGB(0, g: 85, b: 255),
                UIColor.colorFromRGB(170, g: 170, b: 255),
                UIColor.colorFromRGB(85, g: 0, b: 0),
                UIColor.colorFromRGB(170, g: 85, b: 85),
    
                UIColor.colorFromRGB(170, g: 255, b: 0),
                UIColor.colorFromRGB(85, g: 170, b: 255),
                UIColor.colorFromRGB(0, g: 170, b: 170), 
                UIColor.colorFromRGB(0, g: 139, b: 210)
            ]
            return palette
        } 
    }
    

    要获取 UIColors 数组,请使用以下命令:

    let colors = UIColor.palette()
    

    【讨论】:

      【解决方案3】:

      我认为您需要一个单例来访问和生成颜色。 我创建了一个例子,RandomizeColor 类是一个单例。

      RandomizeColor.h:

      #import <UIKit/UIKit.h>
      
      @interface RandomizeColor : NSObject
      
      @property (nonatomic, retain) UIColor *currentColor;
      
      + (instancetype)sharedInstance;
      
      - (void)generate;
      
      @end
      

      RandomizeColor.m:

      #import "RandomizeColor.h"
      
      @implementation RandomizeColor
      
      + (instancetype)sharedInstance
      {
          static RandomizeColor *sharedInstance = nil;
          static dispatch_once_t onceToken;
          dispatch_once(&onceToken, ^{
              sharedInstance = [[RandomizeColor alloc] init];
              sharedInstance.currentColor = UIColor.blackColor;
          });
          return sharedInstance;
      }
      
      - (void)generate
      {
          CGFloat red = arc4random() % 255 / 255.0;
          CGFloat green = arc4random() % 255 / 255.0;
          CGFloat blue = arc4random() % 255 / 255.0;
          UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
      
          self.currentColor = color;
      
          NSLog(@"%@", color);
      }
      
      @end
      

      当您需要访问此颜色时,只需#import "RandomizeColor.h" 并调用RandomizeColor.sharedInstance.currentColor; 默认为黑色。

      如果要生成新的随机颜色,请致电RandomizeColor.sharedInstance.generate;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-03
        • 1970-01-01
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-13
        相关资源
        最近更新 更多