Cinci sfaturi pentru crearea de UIButtons elegante

Uneori este nevoie de doar câteva rânduri de cod pentru a vă face interfața pop. Acest tutorial vă va învăța cinci trucuri simple pentru a crea UIButoane elegante pentru a vă face apreciabilă aplicația!

Modificări ulterioare ale tehnicilor și ale software-ului

Anumite aspecte ale aplicațiilor sau tehnicilor utilizate în acest tutorial s-au schimbat de când au fost publicate inițial. Acest lucru ar putea face un pic dificil de urmat de-a lungul. Vă recomandăm să consultați aceste tutoriale mai recente pe același subiect:

  • Categoria Mobiletuts + iOS SDK

Previzualizarea proiectului


Setarea proiectului

În descărcarea care însoțește acest tutorial, veți găsi dosare intitulate "Initial Build" și "Final Build". Mai degrabă decât să arătați toți pașii necesari pentru a configura proiectul inițial, trebuie să descărcați atașamentul și să îl urmați folosind proiectul din dosarul "Initial Build".

Cu proiectul inițial deschis, mergeți la ViewController.m fișier și localizați pentru buclă în cadrul viewDidLoad metodă. Fragmentele de cod din sfaturile de mai jos trebuie plasate în această buclă.


Sfat # 1: Culori Tweak & Gradients

Cel mai fundamental pas spre personalizarea UIButton clasa este de a ajusta culoarea fundalului și a titlului atât pentru stările implicite, cât și pentru cele evidențiate. Următorul fragment de cod stabilește culoarea de fundal a fiecărui buton pentru culoarea neagră, culoarea obișnuită a titlului la culoarea albă și culoarea titlului evidențiată în roșu:

 // Setați butonul Culoare text [btn setTitleColor: [UICcolor whiteColor] pentruState: UIControlStateNormal]; [btn setTitleColor: [UICoror redColor] pentruState: UIControlStateHighlighted]; // Setați butonul Culoarea fundalului [btn setBackgroundColor: [UICcolor blackColor]];

Culorile de fundal solide sunt excelente, dar un gradient subtil poate face adesea diferența între bland și lustruit. Inlocuieste setBackgroundColor: mesaj de mai sus cu următoarele pentru a crea un gradient personalizat:

 // Desenați un gradient personalizat CAGradientLayer * btnGradient = [CAGradientLayer layer]; btnGradient.frame = btn.bounds; btnGradient.colors = [NSArray arrayWithObjects: (id) [[UICcolor colorWithRed: 102.0f / 255.0f verde: 102.0f / 255.0f albastru: 102.0f / 255.0f alfa: 1.0f] CGColor] : 51.0f / 255.0f verde: 51.0f / 255.0f albastru: 51.0f / 255.0f alfa: 1.0f] CGColor], nil]; [btn.layer inserațiSublayer: btnGradient laIndex: 0];

Pornind de la linia 4 de mai sus, un NSArray este creat cu culorile inițiale și gradientul țintă. Rețineți că valorile RGB corespunzătoare trebuie împărțite la 255 înainte de a fi furnizate către colorWithRed: verde: albastru: alpha: mesaj și că o valoare alfa de 1.0 reprezintă în totalitate opacă în timp ce o valoare alfa de 0.0 reprezintă pe deplin transparent. Din păcate, o explicație completă a "magiei" de mai sus este dincolo de scopul acestui tutorial, dar este important să vă amintiți că pur și simplu trebuie să înlocuiți valorile RGB cu valorile începutul / sfârșitul pe care doriți să le utilizați în propriul dvs. personalizat gradient.

Dacă totul a mers bine, meniul dvs. ar trebui să pară așa:

Nu e rău, nu? Și tocmai am început ...


Sfat # 2: rotunjirea colțurilor

Apoi dorim să adăugăm o rază de colț personalizat fiecăruia UIButton pentru a face lucrurile să arate puțin mai elegant. Introduceți următoarele linii de cod pentru a face acest lucru:

 // Colțuri cu butoane rotunde CALayer * btnLayer = [strat btn]; [btnLayer setMasksToBounds: DA]; [btnLayer setCornerRadius: 5.0f];

În linia 4 de mai sus, raza de colț este setată la 5.0. Redați cu acest număr pentru a mări sau a micșora cât de vizibile sunt colțurile.

Ar trebui să aveți acum un meniu care arată doar un pic slicker:


Sfat # 3: Adăugați o margine de accident vascular cerebral

Uneori, trucurile mici fac diferența. Adăugați o lovitură neagră 1px, în jurul fiecărui buton, cu următoarele rânduri de cod:

 // Aplicați o margine neagră de 1 pixel [btnLayer setBorderWidth: 1.0f]; [btnLayer setBorderColor: [[UICcolor negruColor] CGColor]];

Puteți spune diferența? Este foarte subtil, dar încă valoros:


Sfat # 4: Utilizați un font particularizat

Acum hai să încercăm o schimbare mai notabilă. Fontul implicit al sistemului nu îl taie. Meniul de joc pe care îl construim are nevoie de un font care să se potrivească cu estetica vizuală a jocului. O căutare rapidă pe Google Fonts dezvăluie doar un font numit Knewave de către Tyler Finck care ar trebui să facă truc. Descărcați Knewave acum.

După descărcarea Knewave-Regular.ttf fișier, va trebui să-l trageți în panoul Navigator de proiect în Xcode pentru al adăuga la proiectul dvs. Apoi, deschideți Info.plist fişier. Adăugați un nou rând de liste de proprietăți și introduceți "Fonturi furnizate de aplicație". Ar trebui creat automat o matrice. Setați șirul asociat cu elementul 0 la "Knewave-Regular.ttf". Verificați dublu numele deoarece valoarea este sensibilă la minuscule. Salvați fișierul.

După efectuarea modificării de mai sus, fișierul Info.plist ar trebui să arate astfel:

Apoi, va trebui să adăugați Knewave-Regular.ttf fișier la resursele incluse în proiect. Selectați "SleekButtons" din Project Navigator și apoi faceți clic pe fila "Build Fases". Extindeți meniul derulant "Copiere pachete de resurse" și faceți clic pe semnul plus.

În acest moment, ar trebui să puteți începe să utilizați fontul Knewave în proiectul dvs.! Să încercăm asta, sărind înapoi la ViewController.m fișier și modificarea viewDidLoad pentru a seta un font personalizat:

 // Setați butonul Culoare text [btn setTitleColor: [UICcolor whiteColor] pentruState: UIControlStateNormal]; [btn setTitleColor: [UICoror redColor] pentruState: UIControlStateHighlighted]; // Adăugați Font personalizat [[btn titleLabel] setFont: [UIFont fontWithName: @ "Knewave" dimensiune: 18.0f]]; // Desenați un gradient personalizat CAGradientLayer * btnGradient = [CAGradientLayer layer]; btnGradient.frame = btn.bounds;

Observați că fontWithName valoarea este specificată ca "Knewave", nu "Knewave-Regular" așa cum vă puteți aștepta. Acest lucru se datorează faptului că există o diferență între numele fișierului fontului și numele dat al fontului. Veți avea nevoie să fiți sigur că utilizați numele dat atunci când lucrați cu propriile fonturi.

Cu codul de mai sus, meniul jocului ar trebui să fie complet! Construiți și rulați acum și ar trebui să vedeți ceva de genul:


Sfat # 5: Opțional: Aplicați o rotire

Deși nu este utilizată în designul primar demonstrat de acest tutorial, adesea este util să se aplice o ușoară rotație elementelor UIKit, în special UIButton sau UIImage obiecte. A face acest lucru este simplu, și se poate face doar cu o singură linie de cod.

Puteți încerca acest lucru cu codul scris până în prezent, făcând următoarele:

 self.startGameButton.transform = CGAffineTransformMakeRotare (M_PI / 180 * 5.0f); pentru (UIButton * btn în butoane) // Setați butonul Culoare text [btn setTitleColor: [UICcolor whiteColor] pentruState: UIControlStateNormal]; [btn setTitleColor: [UICoror redColor] pentruState: UIControlStateHighlighted];

În linia 1 de mai sus, constanta M_PI este împărțit la 180 pentru a genera 1 radian, care apoi este înmulțit cu 5.0f pentru a avea o rotație de 5 radiani. După cum veți observa dacă construiți și executați proiectul, este posibil ca cele de mai sus să ducă la probleme de anti-aliasing cu elementele UIKit care sunt extrase dinamic. În consecință, aplicarea unei rotații este mai potrivită cu a UIButton când proprietatea imaginii de fundal este setată și grafica raster este în uz (adică aceasta funcționează cel mai bine cu fișierele PNG).


Bonus Sfat: utilizați UIButton-Glossy

Cu cele cinci sfaturi de mai sus, ați văzut cât de ușor poate fi să faceți subtil, dar semnificativ tweaks pentru a UIButton obiect. Cu toate acestea, dacă ți-aș spune că acest lucru ar putea fi mai ușor? Întâlni UIButton-lucioasă, o categorie cu sursa deschisa de George McMullen care aplica automat atat un gradient cat si un finisaj lucios UIButton obiecte.

Implementarea UIButton-lucioasă în propriul proiect este simplu. După ce ați descărcat UIButton-Glossy.h și UIButton-Glossy.m fișiere și le-ați adăugat în proiectul dvs. Xcode, importați fișierul * .h în controlerul vizual principal al proiectului, după cum urmează:

 #import "ViewController.h" #import "UIButton + Glossy.h"

Acum, puteți aplica instantaneu un efect lucios rece pe butoanele dvs. cu o singură linie de cod: [btn makeGlossy];.

Pentru a vedea acest lucru în acțiune, înlocuiți codul de control al vizualizării existente cu următoarele:

 pentru (UIButton * btn în butoane) // Setați butonul Culoare text [btn setTitleColor: [UICcolor whiteColor] pentruState: UIControlStateNormal]; [btn setTitleColor: [UICoror redColor] pentruState: UIControlStateHighlighted]; // Setați culoarea inițială a culorii backgrond [btn setBackgroundColor: [UICcolor blackColor]]; // Adăugați Font personalizat [[btn titleLabel] setFont: [UIFont fontWithName: @ "Knewave" dimensiune: 18.0f]]; // Faceți luciu [btn makeGlossy]; 

Butoanele dvs. ar trebui să aibă acum un finisaj lucios și rezultatul final ar trebui să arate cam așa:


Învelire

Acest tutorial a demonstrat mai multe tehnici pentru a face personalizate UIButton obiectele stralucesc. Descărcați proiectul atașat pentru o privire la codul sursă complet, final.

Întrebări? Comentarii? Sunați de mai jos sau trimiteți-mi un mesaj direct @markhammonds.

Cod