我需要将单元格中的文本对齐。
但是即使我设置为右边,文本也会在屏幕截图中显示为左对齐 任何想法为什么这个细胞的奇怪行为
cell.textLabel.textAlignment = NSTextAlignmentRight;
cell.detailTextLabel.textAlignment = NSTextAlignmentRight;
在阅读stackoverflow上的相关问题和答案后,我找不到解决问题的方法
答案 0 :(得分:2)
否则无法更改Cell的titleLabel框架。相反,您可以将自定义标签添加到单元格的contentView。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * cellIdentifier = @"Cell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
UILabel *lblStatus = [[UILabel alloc] initWithFrame:CGRectMake(12, 8, 175, 15)];
lblStatus.backgroundColor = [UIColor clearColor];
[lblStatus setTag:101];
[cell.contentView addSubview:lblStatus];
}
UILabel *lbl1 = (UILabel *)[cell.contentView viewWithTag:101];
lbl1.text=@"set text";
}
return cell;
}
您也可以通过原型单元实现此目的。 here is a good tutorial of prototype cell.
答案 1 :(得分:1)
您的编码很好,您需要更改我选择的cell.textLabel.
frame size to right side
是使用自定义标签
答案 2 :(得分:0)
最好使用自定义标签并将其添加到cell.contentView,如下所示
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] ;
}
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
label.textAlignment = NSTextAlignmentRight;
[cell.contentView addSubview:label];
label.backgroundColor = [UIColor purpleColor];
label.textColor = [UIColor blackColor];
label.text = [titlesArray objectAtIndex:indexPath.row];
return cell;
}
答案 3 :(得分:0)
解决此问题的唯一方法是创建custuom单元格 先创造 MTTableViewCell.h
#import <UIKit/UIKit.h>
@interface MTTableViewCell : UITableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;
@end
然后创建MTTableViewCell.m
#import "MTTableViewCell.h"
@implementation MTTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void) layoutSubviews {
[super layoutSubviews];
//self.textLabel.frame = CGRectMake(200, 0, 310, 20);
self.detailTextLabel.textAlignment = NSTextAlignmentRight;
self.textLabel.textAlignment = NSTextAlignmentRight;
//self.textLabel.frame = CGRectMake(100, 0, 310, 20);
CGRect adjustedFrame = self.textLabel.frame;
adjustedFrame.origin.x -= 10.0f;
self.textLabel.frame = adjustedFrame;
adjustedFrame = self.detailTextLabel.frame;
adjustedFrame.origin.x -= 10.0f;
self.detailTextLabel.frame = adjustedFrame;
{
CGRect frame = self.textLabel.frame;
frame.size.width = CGRectGetWidth(self.frame);
if(self.accessoryView != nil){
if ( IDIOM == IPAD ) {
frame.size.width = frame.size.width - 210;
} else {
frame.size.width = frame.size.width - 120;
}
frame.origin.x +=30;
}
else{
frame.size.width = frame.size.width - 50;
frame.origin.x += 30.0;
}
self.textLabel.frame = frame;
}
{
CGRect frame = self.detailTextLabel.frame;
frame.size.width = CGRectGetWidth(self.frame);
if(self.accessoryView != nil){
if ( IDIOM == IPAD ) {
frame.size.width = frame.size.width - 210;
} else {
frame.size.width = frame.size.width - 120;
}
frame.origin.x += 30.0;
}
else{
frame.size.width = frame.size.width - 50;
frame.origin.x += 30.0;
}
self.detailTextLabel.frame = frame;
}
}
@end
然后在你的手机中
cell = [[[MTTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
[cell.textLabel setNumberOfLines:2];
[cell.detailTextLabel setNumberOfLines:3];
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
即
答案 4 :(得分:0)
我使用了下面的Button动作。按钮放在tableview旁边
- (IBAction)rightBtn:(id)sender {
cell.textLabel.textAlignment=UITextAlignmentRight;
}
答案 5 :(得分:0)
实际上在这种情况下是最好的方法 - 创建自己的单元格并进行管理。但是如果你需要这样的功能,你可以尝试做类似
的事情cell?.transform = CGAffineTransform(scaleX:-1, y:1)
cell?.textLabel?.transform = CGAffineTransform(scaleX:-1, y:1)
cell?.detailTextLabel?.transform = CGAffineTransform(scaleX:-1, y:1)
这将反转&#34;可见&#34;你需要的一部分细胞。