2010-03-22 14 views
18

Làm cách nào để sử dụng phông chữ tấn công trong mục tiêu C ??? Cụ thể hơn trong UITableViewCellPhông chữ gạch ngang trong mục tiêu C

cell.textLabel.text = name; 
cell.detailTextLabel.text = quantity ; 
cell.XXX = ?? 
+1

bạn có thể chọn câu trả lời đúng để không đánh lừa người dùng truy cập tìm giải pháp cho văn bản máng nổi bật –

Trả lời

9

EDIT: Câu trả lời này đã cũ như iOS 6. Xin xem câu trả lời gần đây hơn dưới đây

Không có hỗ trợ cho phông chữ tấn công qua hoặc gạch chân. Bạn phải tự vẽ các đường trên các chế độ xem cho các nhãn. Điều này là ngớ ngẩn vì thanh tra phông chữ cho IB có các tùy chọn để đặt cảnh cáo và gạch dưới, nhưng chúng sẽ bị bỏ qua ngay lập tức nếu bạn cố gắng đặt chúng.

+0

Có tài liệu nào đó để sao lưu tài khoản này không? (Không phải là tôi nghi ngờ nó, chỉ cần tự hỏi.) – Tim

+0

@Tim, Khác với NSAttributedString và Hướng dẫn lập trình chuỗi được phân bổ không tồn tại trong Tài liệu tham khảo của iPhone Dev, không. Việc thiếu tài liệu là tốt nhất tôi có thể làm. –

+1

Tôi đã từng thay đổi để tấn công thông qua IB, nhưng nó đã bị bỏ qua như bạn đã nói. – wal

4
CGRect frame = sender.titleLabel.frame; 
UILabel *strikethrough = [[UILabel alloc] initWithFrame:frame]; 
strikethrough.opaque = YES; 
strikethrough.backgroundColor = [UIColor clearColor]; 
strikethrough.text = @"------------------------------------------------"; 
strikethrough.lineBreakMode = UILineBreakModeClip; 
[sender addSubview:strikethrough]; 
1

Bạn đã nghĩ đến việc tìm phông chữ gạch ngang của chính bạn và tự tải nó? Nó không phải là khó khăn, chỉ cần thêm UIFont vào tập tin Info.plist của bạn và đặt tên của phông chữ trong đó. Sau đó, bạn có thể đặt văn bản theo cách thủ công thành phông chữ gạch ngang mới đó.

Xem bài đăng này khi tải phông chữ tùy chỉnh.

Can I embed a custom font...

+1

Bất kỳ đề xuất phông chữ nào đi kèm với gạch ngang? – hatunike

5

1-Lấy kích thước của văn bản mà cần phải gạch ngang

CGSize expectedLabelSize = [string sizeWithFont:cell.titleLabel.font constrainedToSize:cell.titleLabel.frame.size lineBreakMode:UILineBreakModeClip]; 

2-Tạo một dòng và thêm nó vào văn bản

UIView *viewUnderline = [[UIView alloc] init]; 
viewUnderline.frame = CGRectMake(20, 12, expectedLabelSize.width, 1); 
viewUnderline.backgroundColor = [UIColor grayColor]; 
[cell addSubview:viewUnderline]; 
[viewUnderline release]; 
48

đây là Marin, các tác giả của chương chuỗi được phân bổ trong "iOS6 theo Hướng dẫn".

Vì iOS6 có thực sự là một hỗ trợ gốc cho một loạt các thuộc tính văn bản khác nhau, bao gồm máng tấn công.

Dưới đây là một ví dụ ngắn, mà bạn có thể sử dụng cho nhãn văn bản di động của bạn:

NSDictionary* attributes = @{ 
    NSStrikethroughStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle] 
}; 

NSAttributedString* attrText = [[NSAttributedString alloc] initWithString:@"My Text" attributes:attributes]; 
cell.textLabel.attributedText = attrText; 

Đó là tất cả. Chúc may mắn!

4

dưới đây là cách bạn vượt qua nhãn của mình. Nhưng hãy nhớ, nó chỉ hoạt động sau khi ios 6,0

NSNumber *strikeSize = [NSNumber numberWithInt:2]; 

NSDictionary *strikeThroughAttribute = [NSDictionary dictionaryWithObject:strikeSize 
forKey:NSStrikethroughStyleAttributeName]; 

NSAttributedString* strikeThroughText = [[NSAttributedString alloc] initWithString:@"Striking through it" attributes:strikeThroughAttribute]; 

strikeThroughLabel.attributedText = strikeThroughText; 
0
UIView *strikeView = [[UIView alloc] initWithFrame:ccr(0, 0, myLabel.bounds.size.width, 1)]; 
strikeView.backgroundColor = [UIColor redColor]; 
strikeView.center = ccp(myLabel.bounds.size.width/2, myLabel.bounds.size.height/2); 
[myLabel addSubview:strikeView]; 
1

Strikethrough có thể bằng cách sử dụng NSStrikeThroughAttributesattributedText của UILabel. Đây là giải pháp trong Swift

let strikeThroughAttributes = [NSStrikethroughStyleAttributeName : 1] 
    let strikeThroughString = NSAttributedString(string: "Text of Label", attributes: strikeThroughAttributes) 
    strikeThroughLabel.attributedText = strikeThroughString 
-2

Điều này sẽ tấn công toàn bộ ô. Trong trường hợp bạn cần nó để trông giống như nhiệm vụ hoàn thành:

CGSize size = cell.contentView.frame.size; // you'll draw the line in whole cell. 

UIView *line = [[UIView alloc] initWithFrame:CGRectMake(15,size.height/2,size.width - 30, 1)]; 
line.backgroundColor = [UIColor grayColor]; // set your preferred color 
[cell addSubview:line]; 

Bạn có thể chỉ ra một số giá trị khác trong CGRectMake thay vì 15 - nó bù đắp bởi X. Trong trường hợp này bạn nên sau đó giảm chiều rộng theo giá trị tăng gấp đôi (trong trường hợp của tôi là 15 * 2 = 30) để trông nó đẹp.

2
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"]; 
[attributeString addAttribute:NSStrikethroughStyleAttributeName 
        value:@2 
        range:NSMakeRange(0, [attributeString length])]; 
yourLabel.attributedText = attributeString; 
+0

Phép thuật thuần túy! Cảm ơn! –

Các vấn đề liên quan