sách gpt4 ai đã đi

Căn chỉnh văn bản theo chiều dọc trong UILabel (Lưu ý: Sử dụng AutoLayout)

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 11:27:58 27 4
mua khóa gpt4 Nike

Tôi đang sao chép Câu hỏi Câu hỏi tương tự đã được hỏi trước đó. Tôi đã thử giải pháp được đưa ra nhưng do kích thước vừa vặn Nó không hoạt động khi tôi sử dụng Autolayout nên không có giải pháp nào.

ảnh chụp màn hình đầu tiên

Màn hình dự kiến ​​sẽ như sau.

ảnh chụp màn hình thứ hai

1 Câu trả lời

biên tập

Trong câu trả lời ban đầu, tôi đã sử dụng kiểu đoạn văn cho các thẻ. Thực tế, đối với nhãn nhiều dòng, điều này thực sự ngăn không cho nhãn trở thành nhãn nhiều dòng. Cuối cùng tôi đã loại nó ra khỏi phép tính của mình. hiện hữu Github Xem thêm trong

Đối với những người thoải mái hơn khi làm việc với mã nguồn mở, hãy nhớ kiểm tra Nhãn Thuộc tính TTTNơi bạn có thể thiết lập căn chỉnh văn bản của nhãn thành TTTAttributedLabelVerticalAlignmentTop


Bí quyết là sự thừa kế Nhãn UI và che phủ vẽ Văn Bản Trong Hình Chữ Nhật. Sau đó buộc văn bản được vẽ ở gốc đường viền của nhãn.

Sau đây là cách triển khai đơn giản mà bạn có thể sử dụng ngay:

nhanh

@IBDesignable lớp TopAlignedLabel: UILabel {
ghi đè hàm drawTextInRect(rect: CGRect) {
nếu để stringText = text {
hãy để stringTextAsNSString = stringText như NSString
var labelStringSize = stringTextAsNSString.boundingRectWithSize(CGSizeMake(CGRectGetWidth(self.frame), CGFloat.max),
tùy chọn: NSStringDrawingOptions.UsesLineFragmentOrigin,
thuộc tính: [NSFontAttributeName: phông chữ],
ngữ cảnh: nil).size
super.drawTextInRect(CGRectMake(0, 0, CGRectGetWidth(self.frame), ceil(labelStringSize.height)))
} khác {
super.drawTextInRect(hình chữ nhật)
}
}
ghi đè func prepareForInterfaceBuilder() {
siêu.prepareForInterfaceBuilder()
layer.borderWidth = 1
layer.borderColor = UIColor.blackColor().CGColor
}
}

Nhanh 3

  @IBDesignable lớp TopAlignedLabel: UILabel {
ghi đè func drawText(in rect: CGRect) {
nếu để stringText = text {
hãy để stringTextAsNSString = stringText như NSString
hãy để labelStringSize = stringTextAsNSString.boundingRect(với: CGSize(chiều rộng: self.frame.width, chiều cao: CGFloat.greatestFiniteMagnitude),
tùy chọn: NSStringDrawingOptions.usesLineFragmentOrigin,
thuộc tính: [NSFontAttributeName: phông chữ],
ngữ cảnh: nil).size
super.drawText(trong: CGRect(x:0,y:0,width:self.frame.width, height:ceil(labelStringSize.height)))
} khác {
super.drawText(trong: hình chữ nhật)
}
}
ghi đè func prepareForInterfaceBuilder() {
siêu.prepareForInterfaceBuilder()
layer.borderWidth = 1
layer.borderColor = UIColor.black.cgColor
}
}

Mục tiêu-C

IB_CÓ THỂ THIẾT KẾ
@interface TopAlignedLabel: Nhãn UI

@kết thúc

@implementation Nhãn TopAligned

- (void)drawTextInRect:(CGRect)rect {
nếu (self.text) {
CGSize nhãnStringSize = [self.text boundingRectWithSize:CGSizeMake(CGRectGetWidth(self.frame), CGFLOAT_MAX)
tùy chọn:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
thuộc tính:@{NSFontAttributeName:self.font}
ngữ cảnh:nil].kích thước;
[siêu drawTextInRect:CGRectMake(0, 0, ceilf(CGRectGetWidth(self.frame)),ceilf(labelStringSize.height))];
} khác {
[siêu drawTextInRect:rect];
}
}

- (void)prepareForInterfaceBuilder {
[siêu chuẩn bị cho Giao diện Xây dựng];
chiều rộng của lớp biên giới = 1;
self.layer.borderColor = [UIColor blackColor].CGColor;
}

@kết thúc

Vì tôi đã sử dụng IBDesignable nên bạn có thể thêm nhãn này vào Storyboard của mình và xem nó chạy, đây là cách hiệu quả với tôi

nhập mô tả hình ảnh ở đây

Liên quan đến iOS - Căn chỉnh văn bản theo chiều dọc trong UILabel (Lưu ý: Sử dụng AutoLayout), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/28605341/

27 4 0
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com