2016-10-31 2 views
0

Можно ли изменить цвет кнопки с помощью метки с использованием случайного генератора?Swift Random Color Generator

Для примера .. Ярлык «A» является диктором названия/цвета и будет уведомлять «Button 1 и Button 2», какие цвета они будут генерировать, чтобы быть случайным.

+1

Цвет состоит из из 3 компонентов: красный, зеленый и синий. Просто сгенерируйте 3 случайных числа между 0 и 1 и сделайте 'UIColor' из них –

ответ

1
let randomRed:CGFloat = CGFloat(arc4random_uniform(256)) 
let randomGreen:CGFloat = CGFloat(arc4random_uniform(256)) 
let randomBlue:CGFloat = CGFloat(arc4random_uniform(256)) 
let myColor = UIColor(red: randomRed/255, green: randomGreen/255, blue: randomBlue/255, alpha: 1.0) 
+0

Могу ли я использовать более трех цветов? – Terril320

+0

Это генерирует случайный цвет. Это не обязательно будет красным, зеленым или синим, если это то, о чем вы просите. –

+0

См. Мое редактирование, это на самом деле лучшее решение для вашего дела –

1

Попробуйте этот код:

Ответ 1: Генерация случайных цвета из массива (ограничить до 3 цвета)

Примечание: вы должны установить начальную BackgroundColor к кнопке в viewDidLoad

yourButtonName.backgroundColor = .red // set any colour 

    //Button background array 
    let buttonBG = [UIColor.red,UIColor.green,UIColor.black] 

    //Button title colour array 
    let buttonTitle = [UIColor.orange,UIColor.cyan,UIColor.yellow] 

Использование: Попробуйте ниже код внутри вашей кнопки action.It будет генерировать randomColor выделено из массива ...

let BGRandomIndex = Int(arc4random_uniform(UInt32(buttonTitle.count))) 
    yourButtonName.tintColor = buttonTitle[BGRandomIndex] 

    let TitleRandomIndex = Int(arc4random_uniform(UInt32(buttonBG.count))) 
    yourButtonName.backgroundColor = buttonBG[TitleRandomIndex] 

Ответ 2: Генерировать случайный цвет.

func randomCGFloat() -> CGFloat { 
    return CGFloat(arc4random())/CGFloat(UInt32.max) 
} 

func randomColor() -> UIColor { 
    let r = randomCGFloat() 
    let g = randomCGFloat() 
    let b = randomCGFloat() 

    // If you wanted a random alpha, just create another 
    // random number for that too. 
    return UIColor(red: r, green: g, blue: b, alpha: 1) 
} 

Использование: Попробуйте ниже код внутри вашей кнопки action.It будет генерировать randomColor на каждой кнопке мыши ...

yourButtonName.backgroundColor = randomColor() // to get random background button backgroundColor 

yourButtonName.tintColor = randomColor() //to get random background button title color 
0
public func getRandomColor() -> UIColor{ 

    let randomRed:CGFloat = CGFloat(drand48()) 

    let randomGreen:CGFloat = CGFloat(drand48()) 

    let randomBlue:CGFloat = CGFloat(drand48()) 

    return UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0) 

    } 

Вы будете нуждаться функцию, чтобы произвести случайные CGFloats в диапазоне от 0 до 1:

вы можете использовать

CGFloat(arc4random())/CGFloat(UInt32.max) 

чередуются для drand48()

Если вы хотите альфа как случайный, просто создать еще одно случайное число для этого Просто создать случайный фон для вашего зрения, как

self.view.backgroundColor = UIColor().getRandomColor() 
+2

Что это делает? Как он отвечает на вопрос? Не просто выкидывать код. Объяснись! https://stackoverflow.com/help/how-to-answer – Rob

+0

, пожалуйста, уточните мой последний обновленный ответ – gowtham