我创建一个在self中有tableview类的项目。 tableview的任何单元格中都有3个东西。 (1个按钮(左侧)和2个标签,如底部图像)
我希望标题单元格正确对齐,但我无法做到。
这是我的代码。我的错误在哪里:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
_backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"copymove-cell-bg"]];
[_backgroundImageView setContentMode:UIViewContentModeTopRight];
[self setBackgroundView:_backgroundImageView];
[self setSelectionStyle:UITableViewCellSelectionStyleNone];
_iconButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_iconButton setFrame:CGRectMake(0, 10, 47, 50)];
[_iconButton setAdjustsImageWhenHighlighted:NO];
[_iconButton addTarget:self action:@selector(iconButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[_iconButton setImage:[UIImage imageNamed:@"item-icon-folder"] forState:UIControlStateNormal];
[_iconButton setImage:[UIImage imageNamed:@"item-icon-folder-selected"] forState:UIControlStateSelected];
[_iconButton setImage:[UIImage imageNamed:@"item-icon-folder-selected"] forState:UIControlStateHighlighted];
[self.contentView addSubview:_iconButton];
_titleTextField = [[UILabel alloc] initWithFrame:CGRectMake(69, 29, _titleTextField.frame.size.width, _titleTextField.frame.size.height)];
[_titleTextField setFont:KOFONT_FILES_TITLE];
[_titleTextField setTextColor:KOCOLOR_FILES_TITLE];
[_titleTextField.layer setShadowColor:KOCOLOR_FILES_TITLE_SHADOW.CGColor];
[_titleTextField setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin];
[_titleTextField.layer setShadowOffset:CGSizeMake(0, 1)];
[_titleTextField.layer setShadowOpacity:1.0f];
[_titleTextField.layer setShadowRadius:0.0f];
[_titleTextField setTextAlignment:UITextAlignmentRight];
[_titleTextField setLineBreakMode:UILineBreakModeMiddleTruncation];
[self.contentView addSubview:_titleTextField];
[self.layer setMasksToBounds:YES];
_countLabel = [[UILabel alloc] initWithFrame:CGRectMake(273, 29, 47, 28)];
[_countLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin];
[_countLabel setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"item-counter"]]];
[_countLabel setTextAlignment:UITextAlignmentCenter];
[_countLabel setLineBreakMode:UILineBreakModeMiddleTruncation];
[_countLabel setFont:KOFONT_FILES_COUNTER];
[_countLabel setTextColor:KOCOLOR_FILES_COUNTER];
[_countLabel setShadowColor:KOCOLOR_FILES_COUNTER_SHADOW];
[_countLabel setShadowOffset:CGSizeMake(0, 1)];
[self setAccessoryView:_countLabel];
[self.accessoryView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleBottomMargin];
}
return self;
}
答案 0 :(得分:1)
如果您使用的是iOS6,
使用[_countLabel setTextAlignment:NSTextAlignmentCenter];
,因为在iOS6中不推荐使用UITextAlignmentCenter。
要对齐,
[_countLabel setTextAlignment:NSTextAlignmentRight];
希望这可以帮助你...
答案 1 :(得分:0)
您的代码在我的最后工作正常。请检查您传递给标签的宽度和高度。只需通过设置标签的宽度和高度来检查代码。
希望它对你有所帮助。
答案 2 :(得分:0)
_titleTextField.contentHorizontalAlignment =
UIControlContentHorizontalAlignmentRight
答案 3 :(得分:0)
首先UITextAlignmentRight
为deprecated
in iOS6
,因此您应该使用:
_titleTextField.textAlignment = 2;
其次,您需要检查UILabel Frame
。检查CGFloat x, CGFloat y
的{{1}}和width
。
textAlignment = 0(LeftAlignment)。 textAlignment = 1(CenterAlignment)。 textAlignment = 2(RightAlignment)。
希望它有所帮助。
答案 4 :(得分:0)
如果对齐标签内的文字是你的问题,那么上面的解决方案是好的。 如果设置框架是问题那么,我建议保持代码清洁像 -
拥有nib
说Cell.xib
个文件以及相应的.m
和.h
说Cell.m
和Cell.h
文件,该文件是nib文件。
Cell
类应为UITableViewCell
的子类。将UILables/UIImageView/UIButton
放在xib
所需的位置,并使用Cell
课程中的相应属性进行映射(同时在Cell identifier
中提供一些Cell.xib
)。
在cellForRowatIndex
datasource
方法中,从nib获取单元格 -
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
Cell *cell = (Cell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];//same CellIdentifier as in the Cell.xib
if(cell==nil){
cell = [[[NSBundle mainBundle] loadNibNamed:@"Cell" owner:self options:nil] lastObject];
}
//Access and set the labels, imageViews here
return cell;
}
答案 5 :(得分:0)
_titleTextField = [[UILabel alloc] initWithFrame:CGRectMake(69, 29, _titleTextField.frame.size.width, _titleTextField.frame.size.height)];
这很奇怪。您可以根据自己的宽度和高度设置标签的宽度和高度。这将把它设置为前一个标签的宽度和高度。我不知道你第一次遇到这段代码会发生什么。
您的文本在标签视图的边界内与右侧对齐,但边界不会在您想要的位置结束。您可以尝试设置背景颜色,以便查看标签框的位置。
_titleTextField.backgroundColor = [UIColor yellowColor];
您应该将其设置为填充单元格的空间,并让它将文本放在其中。使标签的框架太大不会影响文本的大小,尽管可能会使其太小,具体取决于所设置的选项。
_titleTextField = [[UILabel alloc] initWithFrame:CGRectMake(69, 29, 273 - 69, self.contentview.bounds.size.height)]
答案 6 :(得分:0)
适用于iOS 10+& Swift 3 +
titleTextField.textAlignment = .center
lblTitle.textAlignment = .right