JSQMessagesViewController 自定义单元格自动布局问题 - IOS
JSQMessagesViewController Custom Cell Auto layout Issue - IOS
我正在使用 JSQMessagesViewController 并根据此答案创建了一个自定义单元格。
现在我正在努力正确设置自动布局约束。因此,消息气泡无法正确显示。请帮我正确设置约束条件
所以让我们尝试一下。所以我要做的第一件事就是为第一个按钮设置一个与另一个按钮高度相同的约束。您可以通过多种方式完成,但为了简洁起见,我在这里只介绍一种。您可以按住计算机上的 control
按钮和 select button1
并拖动到 button2
。这将为您提供几个看起来像这样的选项。
你想要 select Equal Heights
这将使你的两个按钮具有相同的高度。然后你会想给它一个高度。再次按住键盘上的 control
按钮,但这次单击 button1
在 button1
内拖动并释放。你应该得到一些类似的东西。
如果您没有获得所需的选项,请尝试沿对角线方向拖动。 Xcode 试图根据拖动的方向猜测您想要的约束。 IE。如果你垂直拖动你应该得到 Height
选项。
然后您可以转到右侧的属性检查器并设置一个数字作为您想要的高度。文本通常在 12pt 左右,所以我会为按钮的高度选择 30pt 或更多。然后为它们之间的间距以及到包含视图的前导和尾随添加一个约束,或者您可以给它们一个标准宽度并将它们置于视图的中心。哪一个最适合你。
编辑:
您还应该调整气泡大小计算。
它可以在 JSQMessagesBubblesSizeCalculator class 中找到。
例如:在
- (CGSize)messageBubbleSizeForMessageData {
if([messageData isOptionMessage]){
// add button height also (In this case i have set constant 200. But we have to calculate the actual button heights instead)
finalSize = CGSizeMake(finalWidth, stringSize.height + verticalInsets + 200)
} else {
finalSize = CGSizeMake(finalWidth, stringSize.height + verticalInsets)
}
}
如果您需要更多帮助,请告诉我并继续努力。
我正在使用 JSQMessagesViewController 并根据此答案创建了一个自定义单元格。
现在我正在努力正确设置自动布局约束。因此,消息气泡无法正确显示。请帮我正确设置约束条件
所以让我们尝试一下。所以我要做的第一件事就是为第一个按钮设置一个与另一个按钮高度相同的约束。您可以通过多种方式完成,但为了简洁起见,我在这里只介绍一种。您可以按住计算机上的 control
按钮和 select button1
并拖动到 button2
。这将为您提供几个看起来像这样的选项。
你想要 select Equal Heights
这将使你的两个按钮具有相同的高度。然后你会想给它一个高度。再次按住键盘上的 control
按钮,但这次单击 button1
在 button1
内拖动并释放。你应该得到一些类似的东西。
如果您没有获得所需的选项,请尝试沿对角线方向拖动。 Xcode 试图根据拖动的方向猜测您想要的约束。 IE。如果你垂直拖动你应该得到 Height
选项。
然后您可以转到右侧的属性检查器并设置一个数字作为您想要的高度。文本通常在 12pt 左右,所以我会为按钮的高度选择 30pt 或更多。然后为它们之间的间距以及到包含视图的前导和尾随添加一个约束,或者您可以给它们一个标准宽度并将它们置于视图的中心。哪一个最适合你。
编辑:
您还应该调整气泡大小计算。 它可以在 JSQMessagesBubblesSizeCalculator class 中找到。 例如:在
- (CGSize)messageBubbleSizeForMessageData {
if([messageData isOptionMessage]){
// add button height also (In this case i have set constant 200. But we have to calculate the actual button heights instead)
finalSize = CGSizeMake(finalWidth, stringSize.height + verticalInsets + 200)
} else {
finalSize = CGSizeMake(finalWidth, stringSize.height + verticalInsets)
}
}
如果您需要更多帮助,请告诉我并继续努力。