В вашем сервисе заголовков, возможно, рассмотрите возможность использования Subject
из rxjs, а затем создайте метод, который обновляет значение этого Субъекта в сервисе ex
// header.service.ts
selectedRecipe: Subject<any> = new Subject();
chooseRecipe(recipe: string) {
this.selectedRecipe.next(recipe);
}
// header.component.ts
yourClickMethod(recipe: string) {
this.heservice.chooseRecipe(recipe);
}
your app component logic would stay the same, the subscribe will work the same way.
Несколько предложений обеспечиваются как ответы на этот вопрос . Я предложил технику, описанную в это сообщение с соответствующими нормами:
+ (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
До устройства хранения данных изображения, самый быстрый формат изображения для использования с iPhone является PNG, потому что это имеет оптимизацию для того формата. Однако, если Вы хотите сохранить эти изображения как JPEGs, можно взять UIImage и сделать следующее:
NSData *dataForJPEGFile = UIImageJPEGRepresentation(theImage, 0.6);
Это создает экземпляр NSData, содержащий необработанные байты для изображения JPEG при 60%-й качественной установке. Содержание которого экземпляр NSData может тогда писаться в диск или кэшироваться в памяти.
Если бы Вы управляете сервером, я настоятельно рекомендовал бы изменить размеры стороны сервера изображений с ImageMagik. Загрузка больших изображений и изменение размеров их по телефону являются тратой многих драгоценных ресурсов - пропускная способность, батарея и память. Все из которых недостаточны по телефонам.
Самое легкое и большая часть простого способа изменить размеры Ваших изображений были бы этим
float actualHeight = image.size.height;
float actualWidth = image.size.width;
float imgRatio = actualWidth/actualHeight;
float maxRatio = 320.0/480.0;
if(imgRatio!=maxRatio){
if(imgRatio < maxRatio){
imgRatio = 480.0 / actualHeight;
actualWidth = imgRatio * actualWidth;
actualHeight = 480.0;
}
else{
imgRatio = 320.0 / actualWidth;
actualHeight = imgRatio * actualHeight;
actualWidth = 320.0;
}
}
CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight);
UIGraphicsBeginImageContext(rect.size);
[image drawInRect:rect];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();