如何将UIImage和UILabel水平居中在一起?
我有一个用户图标和用户名标签 而且我希望图像和标签在屏幕上水平对齐。如何将UIImage和UILabel水平居中在一起?
由于标签的长度随用户名称的长度而变化(图像的大小是固定的) 我不能将该位置设置为固定值。
现在我在运行时更改图像和宽度的位置, 这很不方便。
有没有什么好的方法可以做到这一点?
谢谢:)
这里是快照:
所有权利。 我知道有没有一种非常方便的方式来做到这一点,只是与IB。 我学习了[label sizetoFit]的功能。 这非常有帮助。
在android中,使用xml布局来执行此操作非常方便。 但在ios中,我必须编写代码来控制图像和标签的位置。 是的...不是太糟糕。
谢谢大家:)
[label sizetoFit];
label.center =imageView.center;
这会使图像上的标签中心center..and它会出现在顶......
现在你可以使用CGRect
操纵移动根据您的图片高度向下标注原始标签。
编辑..现在你可以做到这一点..
CGRect frame = label.frame;
frame.origin.x -= imageview.frame.size.width/2 - 15; // you can change 15 to a more appropriate number based on your preference..
label.frame = frame;
做好上面你做的两行代码在我的答案上顶后给予。
[标签sizetoFit]效果很好。 但是label.center = imageView.center;没有; 也许我没有清楚表达。 图像和标签具有相同的positon.y,但position.x是不同的。 图像位于标签的左侧,标签位于图像的右侧。 – 2012-03-13 05:31:30
用截图解释你想要什么..? – Shubhank 2012-03-13 05:35:55
我已添加快照 – 2012-03-13 05:40:43
#define MARGIN 10.0f
在你-layoutSubviews方法,这样做:
[ label sizeToFit ] ;
CGRect r = label.frame ;
r.origin = (CGPoint){ CGRectGetMaxX(imageView.frame) + MARGIN, CGRectGetMidY(imageView.frame) - 0.5 * r.size.height } ;
label.frame = CGRectIntegral(r) ;
更新这里是如何居中图像视图和标签单元
bounds
应设置封闭视图的边界
//
// center an image view + label in parent view, with label to right of image view
//
[ label sizeToFit ] ;
CGSize size = (CGSize){ imageView.image.size.width + MARGIN + label.bounds.size.width,
MAX(imageView.image.size.height, label.bounds.size.height } ;
CGRect r = (CGRect){
{ CGRectGetMidX(bounds) - 0.5 * size.width,
CGRectGetMidY(bounds) - 0.5 * size.height },
size }
} ;
CGRect imageFrame, labelFrame ;
CGRectDivide(r, &imageFrame, &labelFrame, imageView.image.size.width, CGRectMinXEdge) ;
imageView.frame = imageFrame ;
labelView.frame = labelFrame ;
做一些计算ation
UIImageView +偏移宽度的宽度(空间b/n UIImageView和UILabel“将此值保持为常量值”)+ UILabel Width =您将获得一些“X”宽度。
iPhone屏幕宽度为460.
320-X =剩余宽度。
剩余宽度/ 2将此值传递给UIImageView的X值。这可能会帮助你。
是的,我这样做。但我很抱歉。也许宽度是320 :) – 2012-03-13 06:05:47
抱歉我的错误! – 2012-03-13 06:39:26
你能发表一些快照吗? – 2012-03-13 05:33:41
我已添加快照。图像的大小是固定的,但是位置应该随着标签的长度而改变。 对不起,我可怜的英语.. – 2012-03-13 05:40:06