Я думаю, что если кто-то захочет использовать PHP и MySQL или какой-нибудь другой сервер базы данных:
(int)$foo
. Подробнее о типах переменных в PHP читайте здесь . Если вы используете библиотеки, такие как PDO или MySQLi, всегда используйте PDO :: quote () и mysqli_real_escape_string () . Примеры библиотек:
---- PDO
----- Никакие заполнители - не спешили для SQL-инъекций! Это плохо
$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values ($name, $addr, $city)");
----- Без имени заполнители
$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values (?, ?, ?);
----- Именованные заполнители
$request = $pdoConnection->("INSERT INTO parents (name, addr, city) value (:name, :addr, :city)");
--- MySQLi
$request = $mysqliConnection->prepare(' SELECT * FROM trainers WHERE name = ? AND email = ? AND last_login > ?'); $query->bind_param('first_param', 'second_param', $mail, time() - 3600); $query->execute();
PS:
PDO побеждает в этом сражении с легкостью. Благодаря поддержке двенадцати различных драйверов баз данных и именованных параметров мы можем игнорировать небольшую потерю производительности и привыкнуть к ее API. С точки зрения безопасности, оба они являются безопасными, пока разработчик использует их так, как они должны использоваться
. Но хотя PDO и MySQLi довольно быстры, MySQLi выполняет незначительную скорость в тестах - ~ 2,5% для незаготовленных отчетов и ~ 6,5% для подготовленных.
И, пожалуйста, проверьте каждый запрос в своей базе данных - это лучший способ предотвратить инъекцию.
Вы могли также использовать графическое изображение один пиксель шириной в качестве градиента и установить свойство представления для расширения диаграммы для заполнения представления (предполагающий размышление о простом линейном градиенте и не некоторой радиальной диаграмме).
Можно использовать Базовую Графику для рисования градиента, как указано в ответе Mike's. Как более подробный пример, Вы могли создать UIView
подкласс для использования в качестве фона для Вашего UILabel
. В том UIView
подкласс, переопределите drawRect:
метод и введите код, подобный следующему:
- (void)drawRect:(CGRect)rect
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGGradientRef glossGradient;
CGColorSpaceRef rgbColorspace;
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
CGFloat components[8] = { 1.0, 1.0, 1.0, 0.35, // Start color
1.0, 1.0, 1.0, 0.06 }; // End color
rgbColorspace = CGColorSpaceCreateDeviceRGB();
glossGradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, num_locations);
CGRect currentBounds = self.bounds;
CGPoint topCenter = CGPointMake(CGRectGetMidX(currentBounds), 0.0f);
CGPoint midCenter = CGPointMake(CGRectGetMidX(currentBounds), CGRectGetMidY(currentBounds));
CGContextDrawLinearGradient(currentContext, glossGradient, topCenter, midCenter, 0);
CGGradientRelease(glossGradient);
CGColorSpaceRelease(rgbColorspace);
}
Этот конкретный пример создает белый, градиент глянцевого стиля, который оттянут из вершины UIView
к ее вертикальному центру. Можно установить UIView
backgroundColor
к тому, что Вы любите, и этот блеск будет оттянут к тому же цвет. Можно также потянуть радиальный градиент с помощью эти CGContextDrawRadialGradient
функция.
просто необходимо измерить это UIView
соответственно и добавить Ваш UILabel
как подпредставление его для получения эффекта, которого Вы требуете.
РЕДАКТИРОВАНИЕ (4/23/2009): На предложение St3fan я заменил кадр представления его границами в коде. Это исправляет для случая, когда источник представления не (0,0).
Я достигаю этого в представлении с подпредставлением, которое является UIImageView. Изображение, на которое указывает ImageView, является градиентом. Затем я устанавливаю цвет фона в UIView и получаю цветной градиент. Затем я использую вид, как мне нужно, и все, что я рисую, будет под этим видом градиента. Добавив второе представление поверх ImageView, вы можете иметь некоторые параметры, будет ли ваш рисунок ниже или выше градиента ...
Я понимаю, что это старый поток, но для справки в будущем:
Начиная с iPhone SDK 3.0, пользовательские градиенты могут быть реализованы очень легко, без подклассов или изображений, с помощью нового CAGradientLayer
:
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[view.layer insertSublayer:gradient atIndex:0];
Взгляните на документацию CAGradientLayer. При желании вы можете указать начальную и конечную точки (в случае, если вам не нужен линейный градиент, идущий прямо сверху вниз) или даже определенные местоположения, которые соответствуют каждому из цветов.