【发布时间】:2023-03-10 07:25:01
【问题描述】:
这是原始图像。 origin image
我设置如下:
self.layerView.contentsCenter = CGRectMake(0.25, 0.25, 0.5, 0.5);
然后显示如下: change image
但根据苹果的解释,应该是缩放而不是消失,你可以看到变化图像的中心部分消失了。
发生了什么?
你能帮帮我吗,谢谢。
完整代码:
#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);
- 如果 contentsCenter 更改如下:
self.layerView.contentsCenter = CGRectMake(0.25, 0.25, 0.8, 0.8);
它会像这样显示最让我困惑的......
“一个位,像 1 个像素(宽度)”在水平。为什么水平(1 像素)与垂直(0 像素)不同?
如何实现像image5这样的两种效果?
【问题讨论】:
-
您是否在此基础上进行其他更改?
-
我只是把我的完整代码放在那里。
标签: ios objective-c swift uiview calayer