проблема в том ...
У меня есть путь, и я создаю вид, в котором я рисую его.Вид имеет одинаковое измерение пути.Затем я создаю второе представление, в котором переопределяю sizeThatFit: метод, чтобы первое представление масштабировалось до полного заполнения пространства второго представления (это моя идея о том, что делает sizeThatFit: метод! Я не знаю, правильно ли это).Вот код:
CGRect rect = CGPathGetBoundingBox(objPath);
CGRect areaPath = CGRectMake(x, y, rect.size.width, rect.size.height);
FirstView* first = [[FirstView alloc] initWithFrame:areaPath andObjPath:objPath];
SecondView* second = [[SecondView alloc] initWithFrame:CGRectMake(x, y, 200, 200)];
[second addSubview:first];
В SecondView я переопределил sizeThatFit: метод!
Я не знаю, почему это не работает!Путь всегда имеет одно и то же измерение.Я выбрал бы путь и нарисовал бы его в виде, в котором путь принимает его измерение.Так, например, если boundingBox для пути равен [10,10], а представление - [100,100], я бы сказал, что этот путь становится таким же большим, как размерность представления.Как я могу это сделать?
Надеюсь, проблема достаточно ясна.Извините за мой английский:)
Это FirstView.m:
@synthesize objPath;
- (id)initWithFrame:(CGRect)frame andObjPath:(CGMutablePathRef)path {
self = [super initWithFrame:frame];
if (self) {
// Initialization code.
objPath = CGPathCreateMutable();
CGRect rect = CGPathGetBoundingBox(path);
CGAffineTransform trans = CGAffineTransformMake(10, 0, 0, 10, self.bounds.size.width, self.bounds.size.height);
CGPathAddPath(objPath, &trans, path);
CGRect pathContainer = CGPathGetBoundingBox(path);
CGPathAddRect(objPath, &trans, pathContainer);
CGPathCloseSubpath(objPath);
}
return self;
}
- (void)drawRect:(CGRect)rect {
// Drawing code.
CGContextRef current = UIGraphicsGetCurrentContext();
CGContextAddPath(current, objPath);
CGContextSetLineWidth(current, 0.6);
CGContextSetRGBStrokeColor(current, 0xff / 255.0, 0x40 / 255.0, 0x40 / 255.0, 1);
CGContextSetRGBFillColor(current, 0xff / 255.0, 0xc1 / 255.0, 0xc1 / 255.0, 1);
CGContextDrawPath(current, kCGPathFillStroke);
}
РЕДАКТИРОВАТЬ:
Если я делаю
FirstView* first = [[FirstView alloc] initWithFrame:areaPath andObjPath:objPath];
SecondView* second = [[SecondView alloc] initWithFrame:CGRectMake(x, y, 200, 200)];
[second addSubview:first];
[first sizeToFit];
и в методе переопределения SecondView.mi sizeThatFit устанавливается первое представление !!!Проблема в том, что путь тоже не подходит !!!У него всегда одно и то же измерение: (
EDIT2
Я тоже так пробовал:
FirstView* first = [[FirstView alloc] initWithFrame:areaPath andObjPath: objPath];
[first setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[first setContentMode:UIViewContentModeScaleAspectFit];
SecondView* second = [[SecondView alloc] initWithFrame:CGRectMake(x, y, 200, 200)];
second.autoresizesSubviews = YES;
[second setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[second setContentMode:UIViewContentModeCenter];
[second addSubview:first];
Но ничего! Это очень напряженно....: '(
Пожалуйста, мне нужна помощь!