Самый простой способ - установить рамку вашего UIImageView
и установить contentMode
в один из вариантов изменения размера.
Или вы можете использовать этот служебный метод, если вам действительно нужно изменить размер изображения:
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
// In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).
// Pass 1.0 to force exact pixel size.
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
Пример использования:
#import "MYUtil.h"
…
UIImage *myIcon = [MYUtil imageWithImage:myUIImageInstance scaledToSize:CGSizeMake(20, 20)];
Этот конкретный стиль функции не поддерживается C # как однострочное объявление. Вы должны разделить объявление и определение на 2 строки
Func<int, int> fac = null;
fac = n => (n <= 1) ? 1 : n * fac(n - 1);
Ну боже, если бы вы просто набрали «почему рекурсивная лямбда вызывает ошибку определенного присваивания?» в какую-нибудь поисковую систему, вы бы нашли ответ в моей статье на эту тему.
: -)
Сначала вам нужно будет создать fac
и назначить его позже (что довольно нефункционально, поскольку зависит от множественного назначения) или использовать так называемые Y-комбинаторы
.
Пример:
delegate Func<TIn, TOut> FixedPointFunction<TIn, TOut>(Func<TIn, TOut> f);
static Func<T, TRes> Fix<T, TRes>(FixedPointFunction<T, TRes> f) {
return f(x => Fix(f)(x));
}
static void Main(string[] args) {
var fact = Fix<int, int>(f => x => (x <= 1) ? x : x * f(x - 1));
Console.WriteLine(fact(5));
}
Но учтите, что это может быть трудно прочитать / понять.