2010-06-14 36 views
45

Làm cách nào để thêm hình nền vào nhãn UILabel trong Ứng dụng iPhone. Tôi đã cố gắng để làm điều đó thông qua IB nhưng không có kết quả.Thêm hình nền vào UILabel

Trả lời

141

Hãy thử làm việc đó với mã:

Objective-C:

theLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blah"]]; 

Swift:

theLabel.backgroundColor = UIColor(patternImage: UIImage(named: "blah")!) 

Hoặc đặt một UIImageView đằng sau nhãn (không khuyến khích).


Cập nhật: đặt UIImageView phía sau nhãn không được khuyến nghị vì bạn sẽ phải quản lý hai chế độ xem. Nhưng nếu bạn phải làm điều gì đó mà chỉ một UIImageView mới có thể làm được điều này vẫn là một cách tiếp cận tốt. Tôi nghi ngờ rằng ứng dụng của bạn sẽ thực sự chạy tốt hơn theo cách này.

+0

Cảm ơn rất nhiều. Đó là chính xác những gì tôi muốn. – Joy

+1

Tính năng tuyệt vời và hữu ích, 1up! :) Nhưng tôi tự hỏi những gì Apple đã suy nghĩ khi thực hiện các hình ảnh như là một backgroundColor. Nó hoàn toàn phản trực giác! Thậm chí CSS có các thuộc tính riêng biệt cho hình ảnh màu của bg. Có lẽ đó là một số di sản từ giao diện người dùng của Apple trong quá khứ? –

+4

Đã thử nghiệm và không hỗ trợ tính minh bạch PNG. Có thể có một số lừa cho nó? Tôi đã thử đặt backgroundColor thành clearColor trước khi đặt nó vào hình ảnh, chỉ dành cho thể thao. Nhưng không có hiệu lực, tất nhiên. –

18

nếu bạn muốn hình ảnh đó phải được kéo dài để lấp đầy Chiều rộng nhãn. thử mã này.

UILabel *myLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)]; 

UIImage *img = [UIImage imageNamed:@"a.png"]; 
CGSize imgSize = myLabel.frame.size; 

UIGraphicsBeginImageContext(imgSize); 
[img drawInRect:CGRectMake(0,0,imgSize.width,imgSize.height)]; 
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

myLabel.backgroundColor = [UIColor colorWithPatternImage:newImage]; 
+0

nó hoạt động nhưng vì lý do nào đó chất lượng không như mong đợi. tại sao vậy? – Esqarrouth

+0

@Esq Nếu bạn kéo dài một hình ảnh, nó sẽ bị mất định nghĩa và không có chất lượng cao như ảnh gốc –

+0

Làm thế nào về hình ảnh chín bản vá? Điều này có thể khắc phục vấn đề chất lượng? – byJeevan

0

Swift 2.2: thiết lập các hình nền với màu nền

UIGraphicsBeginImageContextWithOptions(stationNameLabel.frame.size, false, 0.0) 

    let context = UIGraphicsGetCurrentContext(); 

    let components = CGColorGetComponents(color.CGColor) 

    CGContextSetRGBFillColor(context, components[0], components[1], components[2], 0.4); 
    CGContextFillRect(context, CGRectMake(0.0, 0.0, stationNameLabel.frame.size.width, stationNameLabel.frame.size.height)); 


    targetImage.drawInRect(CGRectMake(0.0, 0.0, stationNameLabel.frame.size.width, stationNameLabel.frame.size.height)) 
    let resultImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    label.backgroundColor = UIColor(patternImage: resultImage) 
-1

@pixelfreak, phải không bạn. Ví dụ UIColor với mẫu hình ảnh màu có các vấn đề về hiệu suất nghiêm trọng khi gán cho backroundcolor

cell.cellLabel.backgroundColor = UIColor(patternImage: UIImage(named: "background")!) 
Các vấn đề liên quan