У меня есть несколько сложное требование для размещения нескольких слоев Core Animation.По сути, у меня есть два слоя с содержимым CGImage, которые необходимо изменить размер (сохраняя их пропорции), но также цепляться рядом друг с другом в середине их родительского слоя.Я проиллюстрировал это ниже.
(обе мои иллюстрации показывают границы содержания изображений слоя A и слоя B. Это не имеет значения, если размер самого слоя больше.)

Самое близкое, что я до сих пор достиг, с помощью CAConstraintLayoutManager - это правильно масштабировать их, но центрировать в их половине суперслоя (ниже).

Я получаю их к этому моменту с помощью кода ниже:
layerA.contentsGravity = kCAGravityResizeAspect;
[layerA setConstraints:[NSArray arrayWithObjects:
[CAConstraint constraintWithAttribute:kCAConstraintMinX relativeTo:@"superlayer" attribute:kCAConstraintMinX],
[CAConstraint constraintWithAttribute:kCAConstraintMaxX relativeTo:@"superlayer" kcaConstraintMidX],
[CAConstraint constraintWithAttribute:kCAConstraintMinY relativeTo:@"superlayer" attribute:kCAConstraintMinY],
[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"superlayer" attribute:kCAConstraintMaxY],
nil]];
layerB.contentsGravity = kCAGravityResizeAspect;
[layerB setConstraints:[NSArray arrayWithObjects:
[CAConstraint constraintWithAttribute:kCAConstraintMinX relativeTo:@"superlayer" attribute:kCAConstraintMidX],
[CAConstraint constraintWithAttribute:kCAConstraintMaxX relativeTo:@"superlayer" kcaConstraintMaxX],
[CAConstraint constraintWithAttribute:kCAConstraintMinY relativeTo:@"superlayer" attribute:kCAConstraintMinY],
[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"superlayer" attribute:kCAConstraintMaxY],
nil]];
Как вы можете изменить размер двух слоев и выровнять их?
Одна идея, которая пришла мне в головудолжен был создать слой, содержащий A и B, правильно выложенный, без полей по краям, а затем масштабировать его.Однако я не могу придумать, как это сделать.