Я сделал функциональность, чтобы выбрать адрес из списка доступных адресов. В этой демонстрации для представления таблицы я создал пользовательскую ячейку, которая автоматически настраивается для текста внутри UILabel (то есть адресное поле)Как изменить размер шрифта UILabel, соответствующий кадру uitabelviewcell при работе с ячейками для самостоятельной калибровки?
Проблема заключается в том, что при первом просмотре таблицы я нашел размер шрифта «адресная метка» в ячейках не имеет размера должным образом. Но когда я просматриваю представление таблицы, ячейки отображаются с правильным размером шрифта.
смотри ниже картинки:
Проблема
То, что я хочу
Я получаю второе поведение после перезагрузки tableview внутри viewDidAppear. Но он мерцает на моем экране. Пожалуйста помоги. Любая помощь оценивается.
мой код
вид controller.m
#import "AddressListViewController.h"
#import "AddressListTableViewCell.h"
#import "Utils.h"
@interface AddressListViewController() <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *addressListTableView;
@property (strong, nonatomic) NSArray *arraySavedAddresses;
@property (strong, nonatomic) NSMutableParagraphStyle *paragraphStyle;
@end
@implementation AddressListViewController
#pragma mark - lazy instantiation
- (NSArray *)arraySavedAddresses {
if (!_arraySavedAddresses)
_arraySavedAddresses = @[@"Studio 103, The Business Centre, 61 Wellfield Road, Roath, Cardiff, CF24 3DG",
@"Castor Richardson, P.O. Box 902 3472 Ullamcorper Street, Lynchburg DC 29738, (268) 442-2428, Mob. 9999999999",
@"Maharashtra India",
@"Office 33, 27 Colmore Row, Birmingham, England, B3 2EW"];
return _arraySavedAddresses;
}
- (NSMutableParagraphStyle *)paragraphStyle {
if (!_paragraphStyle) {
_paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[_paragraphStyle setAlignment:NSTextAlignmentLeft];
[_paragraphStyle setLineSpacing:5.0f];
}
return _paragraphStyle;
}
#pragma mark - view controllers life cycle methods
- (void)viewDidLoad {
[super viewDidLoad];
[self.view layoutIfNeeded];
[self.addressListTableView setDataSource:self];
[self.addressListTableView setDelegate:self];
[self.addressListTableView setEstimatedRowHeight:80];
}
#pragma mark - table view delegate methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.arraySavedAddresses count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
AddressListTableViewCell *addressListTableViewCell = [tableView dequeueReusableCellWithIdentifier:@"AddressListTableViewCell" forIndexPath:indexPath];
[Utils updateLabelFontSize:addressListTableViewCell.labelUsername ForInitialHeight:24 andInitialSize:24];
[addressListTableViewCell.labelAddress setFont:[addressListTableViewCell.labelAddress.font fontWithSize:[addressListTableViewCell.labelUsername bounds].size.height * 0.666667]];
[addressListTableViewCell.labelUsername setText:@"Demo User"];
NSString *labelText = [self.arraySavedAddresses objectAtIndex:[indexPath row]];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
[attributedString addAttribute:NSParagraphStyleAttributeName value:self.paragraphStyle range:NSMakeRange(0, [labelText length])];
[addressListTableViewCell.labelAddress setAttributedText:attributedString];
return addressListTableViewCell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension;
}
@end
tableviewcell.m
#import "AddressListTableViewCell.h"
#import "Utils.h"
@implementation AddressListTableViewCell
- (void)awakeFromNib {
[super awakeFromNib];
[[self.viewAddressInfo layer] setBorderColor:[[UIColor lightGrayColor] CGColor]];
}
- (void)layoutSubviews {
[super layoutSubviews];
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (IBAction)buttonRemoveAddressAction:(id)sender {
NSLog(@"Cancel Pressed");
}
tableviewcell.h
#import <UIKit/UIKit.h>
@interface AddressListTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIView *viewAddressInfo;
@property (weak, nonatomic) IBOutlet UILabel *labelUsername;
@property (weak, nonatomic) IBOutlet UILabel *labelAddress;
@property (weak, nonatomic) IBOutlet UIImageView *imageViewRadioSelection;
@end
Где вы изменения размера метки/шрифт? – Tushar
@hi tushar. Просто дай мне минутку. Я также загружаю свой код. Я изменяю размер метки внутри cellforrowatindexpath – appleBoy21
@andrea - проблема в том, что я корректирую шрифт uilabel пропорционально [myUIlabel_address bounds] .size.height. Но в cellforrowatindexpath я не получаю фактическую высоту метки – appleBoy21