gpt4 book ai didi

ios - Corner by UIBezierPath for flexible View (View can be increase width height by content)

转载 作者:行者123 更新时间:2023-11-28 21:30:26 24 4
gpt4 key购买 nike

我是 iOS 新手。我正在制作一个聊天应用程序。下图是表格消息。在每个单元格中,我为 messageView 设置了 4 个角,它显示正确

self.messageView.layer.cornerRadius = 10.0;

enter image description here

现在,我希望我的一些消息只有 3 个角(左上角、左下角、右下角),一些消息有 3 个角(左下角、右下角、右上角)——比如 facebook messenger
所以我为每个单元格使用 UIBezierPath
但是我的消息没有显示全部内容。但是,当我向上/向下滚动时,单元格会重新创建并且显示正确。

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.messageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;
self.messageView.layer.mask = maskLayer;

我认为我的问题是:当我通过 UIBezierPath 为我的 self.messageView 设置 conners 时,self.messageView 尚未完成绘制。所以 self.messageView.bounds 返回错误的值。
但我不知道如何修复它。

任何帮助将不胜感激

最佳答案

您似乎没有在 -layoutSubviews 方法中更新 man。
添加的图层不知道如何处理您的 View ,因此您需要在应用它的 View 的 layoutSubviews 中更改它们的大小。
保留对掩码路径的引用并更新它,在此之前总是调用 super。

关于ios - Corner by UIBezierPath for flexible View (View can be increase width height by content),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327070/

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