Я перешел на Дворак, и моя скорость набора текста увеличилась, и через 8 лет я также научился касаться шрифта.
Вы можете использовать CoreGraphics, чтобы создать путь для круглого прямоугольника с помощью этого фрагмента кода:
static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight)
{
float fw, fh;
if (ovalWidth == 0 || ovalHeight == 0) {
CGContextAddRect(context, rect);
return;
}
CGContextSaveGState(context);
CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect));
CGContextScaleCTM (context, ovalWidth, ovalHeight);
fw = CGRectGetWidth (rect) / ovalWidth;
fh = CGRectGetHeight (rect) / ovalHeight;
CGContextMoveToPoint(context, fw, fh/2);
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1);
CGContextClosePath(context);
CGContextRestoreGState(context);
}
И затем вызвать CGContextClip (context) ; чтобы обрезать его по прямоугольной траектории. Теперь любой выполненный рисунок, в том числе рисунок изображения, будет обрезан до круглой формы прямоугольника.
В качестве примера предположим, что «изображение» является UIImage, а оно находится в drawRect: method:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
addRoundedRectToPath(context, self.frame, 10, 10);
CGContextClip(context);
[image drawInRect:self.frame];
CGContextRestoreGState(context);
Здесь даже более простой способ, доступный в iPhone 3.0 и новее. Каждый объект на основе просмотра имеет связанный слой. Для каждого слоя можно задать радиус угла, это даст вам именно то, что вы хотите:
UIImageView * roundedView = [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"wood.jpg"]];
// Get the Layer of any view
CALayer * layer = [roundedView layer];
[layer setMasksToBounds:YES];
[layer setCornerRadius:10.0];
// You can even add a border
[layer setBorderWidth:4.0];
[layer setBorderColor:[[UIColor blueColor] CGColor]];
Для использования этих методов вам может потребоваться добавить:
#import <QuartzCore/QuartzCore.h>