это исходное изображение. исходное изображение
Я установил его следующим образом:
self.layerView.contentsCenter = CGRectMake(0.25, 0.25, 0.5, 0.5);
, затем отобразил следующее: изменить изображение
но в соответствии с к объяснению Apple, его следует масштабировать, а не исчезать, вы можете увидеть, что центральная часть измененного изображения исчезла.
что произошло?
вы можете мне помочь, спасибо.
полный код:
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,strong) UIView *erView;
@property (nonatomic,strong) CALayer *layerView;
@end
@implementation ViewController
#pragma mark - life cycle
- (void)viewDidLoad {
[super viewDidLoad];
[self setUpView];
}
#pragma mark - set up
- (void)setUpView{
self.view.backgroundColor = [UIColor redColor];
self.erView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 200, 200)];
[self.view addSubview:self.erView];
self.layerView = [CALayer layer];
self.layerView.frame = CGRectMake(0, 0, 200, 200);
self.layerView.backgroundColor = [UIColor blueColor].CGColor;
[self.erView.layer addSublayer:self.layerView];
UIImage *image = [UIImage imageNamed:@"picture"];
[self addSpriteImage:image withContentRect:CGRectMake(0, 0, 1, 1) toLayer:self.layerView];
self.layerView.contentsCenter = CGRectMake(0.25, 0.25, 0.5, 0.5);
}
- (void)addSpriteImage:(UIImage *)image withContentRect:(CGRect)rect toLayer:(CALayer *)layer{
layer.contents = (__bridge id)image.CGImage;
layer.contentsGravity = kCAGravityResizeAspect;
layer.contentsRect = rect;
}
@ zrzka, спасибо за ответ, мне это очень пригодилось! Я многое понимаю. когда я читаю книгу «iOS Расширенные методы CoreAnimation», меня что-то сбивает с толку:
- image1 показывают, что авторская интерпретация этого кода такая же, как и ваша.
self.layerView.contentsCenter = CGRectMake(0.25, 0.25, 0.5, 0.5);
image3
- если contentCenter изменился следующим образом:
self.layerView.contentsCenter = CGRectMake(0.25, 0.25, 0.8, 0.8);
он будет отображаться так, что меня смущает в основном ...
image4
«Немного, например, 1 пиксель (ширина)» по горизонтали. почему Horizontal (1 пиксель) отличается от Vertical (0 пикселей)?
как я могу реализовать два типа эффектов, таких как image5?
изображение 5