Родительский метод __construct()
, определенный в классе b, будет запускаться автоматически, если вы создадите экземпляр дочернего класса a, , если только не существует метод __construct()
, определенный в классе a.
class a extends b {
}
class b {
public function __construct()
{
echo 'In B Constructor';
}
}
$x = new a();
Если метод __construct()
определен в классе a, то это отменяет использование метода __construct()
в классе b .... он будет запускать вместо класса b __construct()
method
class a extends b {
public function __construct()
{
echo 'In A Constructor';
}
}
class b {
public function __construct()
{
echo 'In B Constructor';
}
}
$x = new a();
Итак, если в вашем дочернем классе определен метод __construct()
, то вам нужно явно вызвать конструктор для родителя, если вы хотите выполнить его также.
class a extends b {
public function __construct()
{
parent::__construct();
echo 'In A Constructor';
}
}
class b {
public function __construct()
{
echo 'In B Constructor';
}
}
$x = new a();
Вот что пользователь «bcd» на официальных форумах опубликовал , что в конечном итоге решило проблему (с небольшой модификацией, сделанной мной, чтобы сделать ее статичной для включения в набор служебных методов):
+ (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
Я делаю нечто подобное в своем приложении.
UIImage* resizedImage(UIImage *inImage, CGRect thumbRect)
{
CGImageRef imageRef = [inImage CGImage];
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
if (alphaInfo == kCGImageAlphaNone)
alphaInfo = kCGImageAlphaNoneSkipLast;
CGContextRef bitmap = CGBitmapContextCreate (NULL, thumbRect.size.width, thumbRect.size.height, 8, thumbRect.size.width*3,
CGColorSpaceCreateDeviceRGB(), alphaInfo);
CGContextDrawImage(bitmap, thumbRect, imageRef);
CGImageRef ref = CGBitmapContextCreateImage(bitmap);
UIImage* result = [UIImage imageWithCGImage:ref];
CGContextRelease(bitmap);
CGImageRelease(ref);
return result;
}
Затем создайте новое изображение, ограничивая пропорции. Заменив "изображение" файлом ICO, полученным от Amazon.
CGRect sz = CGRectMake(0.0f, 0.0f, 16, 16);
UIImage *resized = resizedImage(image, sz);
Я ничего не знаю о том, как работают файлы ico, поэтому, возможно, можно легко извлечь изображение 16x16 и использовать его, но я понятия не имею, как.
Насколько я понимаю, Я знаю, что невозможно установить какие-либо полезные свойства изображения в универсальном UITableViewCell
. Самый простой способ (все еще беспорядочный, особенно если вы новичок) уменьшить все до 16x16 - это создать подкласс UITableViewCell
, дать ему UIImageView
, всегда изменять размер изображения равным 16x16, и установите его contentMode равным UIViewContentModeAspectFit
.
У меня еще недостаточно кармы, чтобы комментировать ответы, но у меня все получилось. с кодом bbrandons выше.
Я получил на консоли изрядное количество предупреждений о том, что установка байтов на строку недостаточно высока - после прочтения ответов на это сообщение я установил для него значение 0, что позволяет системе определять правильное значение.
например:
CGContextRef bitmap = CGBitmapContextCreate(NULL, size.width, size.height, 8, 0, CGColorSpaceCreateDeviceRGB(), alphaInfo);