4

自分でtableviewクラスを持つプロジェクトを1つ作成します。テーブルビューの任意のセルに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;
}
4

7 に答える 7

1

iOS6をお使いの方は、

[_countLabel setTextAlignment:NSTextAlignmentCenter];iOS6 では UITextAlignmentCenter が廃止されたため、使用してください。

右揃えにするには、

[_countLabel setTextAlignment:NSTextAlignmentRight];

これがお役に立てば幸いです...

于 2013-05-28T06:45:41.700 に答える
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)]
于 2013-05-28T15:16:13.197 に答える
0

ラベル内のテキストの配置が問題である場合は、上記の解決策が適しています。フレームの設定が問題である場合は、次のようにコードをきれいに保つことをお勧めします-

sayファイルとそれに対応する、nib ファイルの所有者である say andファイルを用意しnibます。クラスは のサブクラスでなければなりません。を必要な位置に配置し、それらをクラス内の対応するプロパティにマップします( にもいくつかを指定します)。Cell.xib.m.hCell.mCell.hCellUITableViewCellUILables/UIImageView/UIButtonxibCellCell identifierCell.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;
        }
于 2013-05-28T09:46:15.457 に答える
0

最初UITextAlignmentRightdeprecated in iOS6であるため、次を使用する必要があります。

_titleTextField.textAlignment = 2;

次に、 を確認する必要がありますUILabel Frame。の と を確認しCGFloat x, CGFloat ywidthくださいUILable

textAlignment = 0 (左揃え)。textAlignment = 1 (中央揃え)。textAlignment = 2 (右揃え)。

それが役に立てば幸い。

于 2013-05-28T07:12:03.823 に答える
0

あなたのコードは私の最後でうまく機能しています。ラベルに渡す幅と高さを確認してください。ラベルの幅と高さを設定して、コードを確認してください。

お役に立てば幸いです。

于 2013-05-28T07:01:02.500 に答える