UITableview Cell 上的删除按钮会阻止自定义单元格图像

发布于 2024-09-26 19:05:49 字数 404 浏览 5 评论 0原文

我对表格视图单元格进行了子类化,并向自定义单元格添加了几个标签和图像。

   [self.contentView addSubview:lblDesc];
   [self.contentView addSubview:imagesToDisplay];

当我编辑 tableView 并按“-”号时,删除按钮会出现在图像和其他内容的顶部。

其他一些应用程序会挤压单元格的内容以容纳删除按钮。

我该怎么做呢?

是否需要添加一个键值观察者 [单元格addObserver:self forKeyPath:@“showingDeleteConfirmation” 选项:NSKeyValueObservingOptionNew 上下文:NULL];

I have subclassed a tableview cell and added a couple of labels and images to the custom cell.

   [self.contentView addSubview:lblDesc];
   [self.contentView addSubview:imagesToDisplay];

When i edit the tableView and press the "-" sign the delete button appears on top of the image and other contents.

Some other apps squeeze the contents of the cell to accomodate the delete button.

How do i go about doing this??

Do i need to add a key value Observer
[cell addObserver: self forKeyPath: @"showingDeleteConfirmation"
options: NSKeyValueObservingOptionNew context: NULL];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拔了角的鹿 2024-10-03 19:05:49

自动调整大小很简单 - 将其想象为网页。网页内容“流动”,它占用的空间与浏览器窗口提供的空间一样多。自动调整大小是相同的。有一些“掩码”告诉 UIKit 你希望你的内容如何调整以适应不同的帧大小。

因此,例如,如果您希望视图从右侧缩小或增大(例如,如果它是像表格单元格这样的左对齐内容),您可以像这样设置遮罩

cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;

:按位或运算,因此如果您希望它从右侧增长(如上所述)但也从底部增长,则可以将两者“或”在一起。

cell.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin);

如果这对您不起作用(例如,您想要在屏幕上放置太多内容,并且需要删除某些元素等,或者您想要以某种方式不同于默认的动画),请考虑使用预先存在的方法在 UITableViewCell 中调用。 文档:

- (void)willTransitionToState:(UITableViewCellStateMask)state

在单元格更改状态(正常->编辑或其他)之前调用,因此如果您需要执行任何特殊操作来将动画处理为编辑状态,那么这是您执行此操作的机会。文档指出:

UITableViewCell 的子类可以
实现这个方法来制作动画
当它发生时,对单元格进行额外的更改
正在改变状态。 UITableViewCell
每当单元格出现时调用此方法
状态之间的转换,例如
从正常状态(默认)到
编辑模式。自定义单元格可以设置
向上并定位任何新视图
以新状态出现。细胞
然后收到一个layoutSubviews消息
(UIView) 它可以在其中定位
这些新观点在他们的最终
新状态的位置。
子类必须始终调用 super
重写此方法。重写此方法。

Autoresizing is simple - think of it like a web page. Web content "flows", it takes up as much space as the browser window gives it. Autoresizing is the same. There are "masks" which tells UIKit how you want your content to adjust to different frame sizes.

So, for example, if you want your view to shrink or grow from the right side (if it were, for example, left-justified content like a table cell), you'd set the mask like this:

cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;

Autoresizing also works like a bitwise-OR operation, so if you want it to grow from the right (as above) but also grow from the bottom, you'd "OR" the two together.

cell.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin);

In the case that this does not work for you (e.g. you want to put too much on the screen, and need to remove certain elements, etc, or you want to animate somehow differently than the default), consider using the pre-existing method calls in UITableViewCell. From the documentation:

- (void)willTransitionToState:(UITableViewCellStateMask)state

This will be called right before the cell changes state (normal->editing or the other), so if you need to do anything special to handle the animation to the editing state, this is your opportunity to do so. The docs state:

Subclasses of UITableViewCell can
implement this method to animate
additional changes to a cell when it
is changing state. UITableViewCell
calls this method whenever a cell
transitions between states, such as
from a normal state (the default) to
editing mode. The custom cell can set
up and position any new views that
appear with the new state. The cell
then receives a layoutSubviews message
(UIView) in which it can position
these new views in their final
locations for the new state.
Subclasses must always call super when
overriding this method.overriding this method.

柠栀 2024-10-03 19:05:49

您需要设置正确的 autoresizingMask ,以便当 contentView 更改大小时按钮可以正确移动。

You need to set the proper autoresizingMask so that your button moves properly when the contentView changes size.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文