gpt4 book ai didi

objective-c - 使用 contentScaleFactor 属性缩放 UITextView

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:54 26 4
gpt4 key购买 nike

我正在尝试为 UIView 创建更高分辨率的图像,特别是 UITextView

这个问题和答案正是我想弄清楚的:

但是,当我这样做时,我的文本仍然模糊:

self.view.transform = CGAffineTransformMakeScale(2.f, 2.f);
[myText setContentScaleFactor:2.f]; // myText is a subview of self.view object

我也在 Apple 示例项目“UICatalog”中对 UILabel 进行了同样的尝试,它也很模糊。

我不明白为什么它对另一个问题对 Warrior 有用,对我却不起作用。我会在那里问 — 但我似乎无法在那里发表评论或提问。

最佳答案

设置 contentScaleFactorcontentsScale 实际上是关键,正如@dbotha 指出的那样,但是您必须分别遍历 View 和图层层次结构才能到达每个实际执行文本渲染的内部 CATiledLayer。添加屏幕比例也可能有意义。

所以正确的实现应该是这样的:

- (void)updateForZoomScale:(CGFloat)zoomScale {
CGFloat screenAndZoomScale = zoomScale * [UIScreen mainScreen].scale;
// Walk the layer and view hierarchies separately. We need to reach all tiled layers.
[self applyScale:(zoomScale * [UIScreen mainScreen].scale) toView:self.textView];
[self applyScale:(zoomScale * [UIScreen mainScreen].scale) toLayer:self.textView.layer];
}

- (void)applyScale:(CGFloat)scale toView:(UIView *)view {
view.contentScaleFactor = scale;
for (UIView *subview in view.subviews) {
[self applyScale:scale toView:subview];
}
}

- (void)applyScale:(CGFloat)scale toLayer:(CALayer *)layer {
layer.contentsScale = scale;
for (CALayer *sublayer in layer.sublayers) {
[self applyScale:scale toLayer:sublayer];
}
}

关于objective-c - 使用 contentScaleFactor 属性缩放 UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com