2013-07-05 25 views
7

Tôi có một nút mà tôi sử dụng UIFont tùy chỉnh để hiển thị văn bản. Phông chữ tải chính xác và được áp dụng chính xác cho tiêu đề nút. Vấn đề của tôi dường như không thể thay đổi kích thước phông chữ:Không thể thay đổi kích thước UIFont tùy chỉnh trên UIButton

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self action:@selector(loginButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
[button setTitle:@"Login" forState:UIControlStateNormal]; 
button.frame = CGRectMake(63.0, 200.0, 194.0, 60.0); 
button.titleLabel.font = [UIFont fontWithName:@"My-Font" size:8.0f]; 
[self.view addSubview:button]; 

Không có vấn đề gì tôi đặt cho cỡ chữ, tôi nhận được một số kích thước mặc định. Mặt khác, nếu tôi làm điều gì đó như thế này:

button.titleLabel.font = [UIFont systemFontOfSize:32.0f]; 

tôi nhận được kích thước 32 font chữ, tuy nhiên, tất nhiên, tôi không có được phông chữ tùy chỉnh của tôi. Vì vậy, làm cách nào để đặt kích thước cho phông chữ tùy chỉnh?

(tôi sử dụng Xcode 4.6.3)

+1

tôi đoán rằng "MyFont" trong 'fontWithName'is null ... Đơn giản và nhanh chóngTest: ' UIFont * myFont = [UIFont fontWithName: @ "MyFont" size: 8.0f]; NSLog (@ "MyFont:% @", myFont); ' – Larme

+0

@Làm đúng, đó là ... hmmm, tại sao nó lại là? Tôi có thể thấy nó trong Bundle Phase -> Copy Bundle Resources. Ngoài ra, có vẻ như phông chữ trên nhãn thay đổi –

+0

Đảm bảo tên phông chữ của bạn là chính xác. Tên phông chữ không phải lúc nào cũng là tên tệp của phông chữ. – HAS

Trả lời

1

Điều thú vị là đủ, nó hóa ra là máy Mac của tôi. Khi tôi đưa bạn mình cài đặt chúng, anh ta không có vấn đề gì. Máy Mac của tôi ở phía cũ, vì vậy có lẽ đây là lý do. Sau đây là các thông số kỹ thuật:

**Mac:** MacBook Pro 15" (Late 2008) 
**Processor:** 2.4 GHz Intel Core 2 Duo 
**Memory:** 4 GB 1067 MHz DDR3 
**Graphics:** NVIDIA GeForce 9600M GT 256 MB 
2

Làm điều này:

NSMutableDictionary *fontsByFamilyName = [NSMutableDictionary dictionary]; 
    NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES] autorelease]]; 

    NSArray *familyNames = [[UIFont familyNames] sortedArrayUsingDescriptors:sortDescriptors]; 
    for (NSString *aFamilyName in familyNames) { 
     NSArray *fontNames = [[UIFont fontNamesForFamilyName:aFamilyName] sortedArrayUsingDescriptors:sortDescriptors]; 

     [fontsByFamilyName setObject:fontNames forKey:aFamilyName]; 
     NSLog(@"fonts :%@", fontsByFamilyName);   
    } 

Look cho cái tên "iOS" của phông chữ của bạn ... Tôi tìm thấy những cusom tôi với phương pháp này. Nếu không, hãy kiểm tra xem bạn đã thêm phông chữ của mình như thế nào (có thể là một hành động bị lãng quên). Nguồn: http://forgecode.net/2010/08/uifont-name-grabber/

+1

yep, tôi không thấy phông chữ của mình trong danh sách –

+1

Ok. Vì vậy, là phông chữ của bạn trong Build Phases/Copy Bundle Ressources và trong Font được cung cấp bởi ứng dụng trong tệp MyAppl-Info.plist. – Larme

+1

có, tôi có thể nhìn thấy nó ở cả hai nơi –

2

Để có được tên font bạn phải vượt qua trong fontWithName:size:, mở phông chữ của bạn với Font Book ứng dụng, sau đó nhìn lên cho PostScript name tài sản. Làm cho shure bạn đã thêm nó vào Info.plist tập tin quá.

+0

tất cả các thực hiện ở trên, phông chữ xuất hiện trong suốt , và kiểm tra trong FontBook ... Tôi nghĩ rằng vấn đề của tôi là thực sự không đúng kiểu phông chữ (phông chữ web so với phông chữ máy tính để bàn) –

2

Có vẻ như đối tượng UIFont của bạn không được tạo chính xác và đang trả về nil.

Đây là hướng dẫn tốt nhất mà tôi đã tìm thấy khi đặt phông chữ tùy chỉnh. Chúc may mắn;)

http://refactr.com/blog/2012/09/ios-tips-custom-fonts/

+0

hướng dẫn rất tốt ... –

-1

đi qua trong 'nil' cho 'My-Font' cho phép thay đổi kích thước văn bản cho các phông chữ mặc định - mà không cần phải biết những gì font thực tế đang được sử dụng là:

button.titleLabel.font = [UIFont fontWithName:nil size:10.0f];