Як дакладна Align UILabel на мабільны Tableview?

Я стварыць адзін праект, які мае клас Tableview самалячэння. У мяне ёсць 3 рэчы ў любой клетцы Tableview. (1 кнопка (левы бок) і 2 Lable як ніжняе малюнак)

enter image description here

Я хачу, каб назва ячэйкі, каб быць правільнае выраўноўванне, але я не мог гэтага зрабіць.

гэта мой код. дзе мая памылка:

- (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;
}
4
у можа паспрабаваць прымусіць пяро для Cell TableView так, што і не павінны даваць кадры ў кодзе, і код будзе нашмат чысцей.
дададзена аўтар Ishank Dubey, крыніца
паспрабаваць з дапамогай такой жа шырыні этыкеткі?
дададзена аўтар tom19830924, крыніца
@ Tom19830924 я гэта раблю, але не працуе :(
дададзена аўтар david, крыніца
@Ishank мой сябар, калі ласка, скажыце мне больш !!!
дададзена аўтар david, крыніца
сябры мае, як стварыць карыстацкую вочка з XIb файл і змясціць у UITable View?
дададзена аўтар david, крыніца

7 адказы

Калі вы выкарыстоўваеце iOS6,

выкарыстоўваць [_ countLabel setTextAlignment: NSTextAlignmentCenter]; , таму што UITextAlignmentCenter асуджаецца ў iOS6.

Для выраўноўвання па правым краі,

[_countLabel setTextAlignment:NSTextAlignmentRight];

Спадзяюся, што гэта дапаможа вам ...

1
дададзена
выкарыстоўваць UITextAlignmentRight замест NSTextAlignmentRight ...
дададзена аўтар lakesh, крыніца
мой сябар я выкарыстоўваю прашыўку 5
дададзена аўтар david, крыніца

Калі выраўноўванне тэксту ўнутры этыкеткі ваша праблема, то гэтыя рашэнні добрыя. Калі ўстаноўка кадра праблемы то, я хацеў бы прапанаваць, каб захаваць код чыстае нешта як-

Ёсць пяро сказаць Cell.xib <�код /> файл і адпаведны і .h сказаць Cell. м і Cell.h файл, які з'яўляецца ўладальнікам файла бабоў. <�Код> Ячэйка клас павінен быць суб клас UITableViewCell . Змесціце UILables/UIImageView/UIButton у XIB у неабходных пазіцыях і супаставіць іх з адпаведнымі ўласцівасцямі ў Ячэйка клас (таксама даць некаторыя ідэнтыфікатар соты у Cell.xib ).

У cellForRowatIndex DataSource метад атрымання клетак ад кончыка пяра як-

-(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;
        }
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)]
0
дададзена

Ваш код працуе выдатна на маім канцы. Калі ласка, праверце шырыню і вышыню вы перадаеце на этыкеткі. Проста праверце свой код, усталяваўшы шырыню і вышыню этыкетак.

Спадзяюся, што гэта дапамагае.

0
дададзена
_titleTextField.contentHorizontalAlignment =  
         UIControlContentHorizontalAlignmentRight
0
дададзена

Першы UITextAlignmentRight гэта асуджаецца у iOS6 , так што вы павінны выкарыстоўваць:

_titleTextField.textAlignment = 2;

Па-другое, вам трэба праверыць UILabel Рамка . Праверце CGFloat х, CGFloat у і шырыня вашай UILable .

<�Р> TextAlignment = 0 (LeftAlignment).   TextAlignment = 1 (CenterAlignment).   TextAlignment = 2 (RightAlignment). </Р>

Спадзяюся, што гэта дапамагае.

0
дададзена

For iOS 10+ & Swift 3+

titleTextField.textAlignment = .center
lblTitle.textAlignment = .right
0
дададзена