gpt4 book ai didi

ios - UIView 内容模式在覆盖 drawRect : 时表现不同

转载 作者:行者123 更新时间:2023-11-29 11:53:11 24 4
gpt4 key购买 nike

我正在学习 iOS。我一直在阅读 Apple 的 View 编程指南。我做了以下尝试内容模式:

  • 我将一个 uiview 拖到 Storyboard 中并将其设为我的 CustomView 类。
  • 然后我将内容模式更改为并将背景颜色设置为粉红色。
  • 然后有一个按钮,只需将自定义 View 的宽度和高度更改为大 1.5 倍。

现在,我发现了一个有趣的事情:

我运行它,然后单击按钮,然后:

  • 案例 1:如果我覆盖绘制矩形方法

drawRect: overrided

然后 View 的外观向下移动

实际尺寸变大了

在网上搜索并查看 Apple 的文档后,除了一个问题提到这可能与 drawLayer:inContext: behavior differently if override the drawRect: 之外,我找不到任何相关的东西:

有人知道这是怎么回事吗?

(抱歉格式问题,这是一个新帐户,我不能发布超过 2 个链接。)

代码:对于 CustomView,只需覆盖或不覆盖 drawRect。

#import "CustomView.h"
@implementation CustomView
- (void)drawRect:(CGRect)rect{
//Do nothing, for case 2 i just commented out this method.
}
@end

改变customView的框架:

- (IBAction)changeBound:(id)sender {
self.customView.frame = CGRectMake(self.customView.frame.origin.x, self.customView.frame.origin.y, self.customView.frame.size.width * 1.5, self.customView.frame.size.height * 1.5);
}

最佳答案

在做了一些研究之后,我想我明白发生了什么:

所以绘制背景代码其实是在-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context中单独处理的。这就是为什么使用空的 drawRect,它仍然绘制背景。此外,根据 drawRect 是否存在(可能通过调用 respondsToSelector?),UIView 在 drawLayer :inContext 中的行为不同。参见 Dennis Fan's answer in this link

关于ios - UIView 内容模式在覆盖 drawRect : 时表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40276397/

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