我正在尝试根据文本中的文本重新调整标签大小(或者我允许的最大宽度为ie108)并在其旁边放置一个按钮,下面的代码在调试时实际上给出了令人满意的结果但是标签的宽度是没有相应改变。 在xib或其他任何事情中是否有任何特殊设置请帮助Iam 。
NSDictionary *attrib=@{NSFontAttributeName:locFeedcell.lbl_location.font};
CGFloat width=[locFeedcell.lbl_location.text sizeWithAttributes:attrib].width;
CGRect newLabelframe=locFeedcell.lbl_location.frame;
CGRect newButtonFrame=locFeedcell.btn_map.frame;
if (width>=108.00f) {
newLabelframe.size.width=108.00;
} else {
newLabelframe.size.width=width;
newButtonFrame.origin.x=locFeedcell.lbl_location.bounds.origin.x+width+4.00;
}
locFeedcell.lbl_location.frame=newLabelframe;
locFeedcell.btn_map.frame=newButtonFrame;
这里是xib文件的快照。
答案 0 :(得分:1)
更新而不是使用locFeedcell.lbl_location.bounds.origin.x+width
使用locFeedcell.lbl_location.frame.origin.x+width
。 bounds.origin.x
始终为0
。
您的.xib
文件中是否启用了自动布局?检查实用程序窗格中的文件检查器选项卡。
如果这没有帮助,您可以在设置之前和之后发布帧的值吗?记住标签和按钮的内存地址,并在布置好所有内容后再次打印它们的框架。
快速提示:
您可以使用CGRectGetMaxX(locFeedcell.lbl_location.frame)
代替locFeedcell.lbl_location.bounds.origin.x+width
来获取框架的右边缘。
答案 1 :(得分:0)
我的代码中没有任何逻辑问题。您可以检查两件事:
答案 2 :(得分:0)
使用Autolayout约束怎么样?
你有3个对象:
您需要3个约束:
| -X- [lbl_recentlyAt]
[lbl_recentlyAt] -20- [lbl_location] -20- [btn_map]
当lbl_location宽度更改以更新布局时,您可能需要调用单元格的setNeedsLayout方法:https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/instm/UIView/setNeedsLayout
[cellView setNeedsLayout]
希望这有帮助!
答案 3 :(得分:0)
//将此用于自定义字体
CGFloat width = [label.text sizeWithFont:[UIFont fontWithName:@“ChaparralPro-Bold”size:40]] .width;
//将此用作系统字体
CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:40]]。width;
label.frame = CGRectMake(point.x,point.y,width,height);
// point.x,point.y - >标签的来源;
// height - >你的标签高度;