Bán kính góc iPhone X dứt khoát là gì?


10

Tôi đã thử nghiệm và không tìm thấy bán kính góc kết luận nào cho iPhone X.

Sử dụng Xcode, tôi đã tạo một vòng tròn có chiều rộng và chiều dài 80 (bán kính 40) và đặt nó ở góc trên cùng bên trái của iPhone X (vì vậy x và y bằng 0), có một khoảng cách nhỏ màu trắng giữa vòng tròn và cạnh của màn hình, mà bạn có thể thấy ở đây:

Tôi cũng đã thử một phương pháp khác, thực hiện điều này bằng một nút:

button.frame.size.height = 812
button.frame.size.width = 375
button.layer.cornerRadius = 40
button.center = self.view.center

Với điều này tôi còn lại với:

Vì vậy, câu hỏi là, bán kính góc thực sự là gì? Hoặc những gì đang xảy ra với Xcode?

Câu trả lời:


15

Góc iPhone X không bán kính góc kết luận. Chúng không phải là vòng cung bình thường, chúng là ' góc liên tục '.

Bạn không thể sao chép chúng bằng một .cornerRadius đơn giản và bạn cũng không thể sử dụng các góc liên tục của riêng Apple, vì đó là API riêng.

CALayer trên iOS 11 có thuộc tính "continCorners" riêng, đây là thứ cung cấp nhiều góc tròn trong SpringBoard - và có thể còn hơn thế nữa! Bây giờ tôi đang ghen.

https://twitter.com/argentumko/status/955773459463790592

Gần nhất bạn có thể nhận được mà không cần thực hiện của riêng bạn là bản vẽ hình chữ nhật tròn của UIBezierPath, sử dụng _continuousRoundedRectBezierPath.


cảm ơn bạn rất nhiều điều này có ý nghĩa hơn bây giờ rất nhiều
chriscrutt

1

Brad Ellismột bài viết chi tiết các đường cong trên iPhone X .

[..] Các góc màn hình tròn của iPhone X không sử dụng phương pháp làm tròn cổ điển khi bạn di chuyển theo một đường thẳng và sau đó sử dụng một góc phần tư duy nhất của một vòng tròn. Thay vào đó, toán học phức tạp hơn một chút. Thường được gọi là một hình tròn, độ dốc bắt đầu sớm hơn, nhưng nhẹ nhàng hơn.

Bạn có thể thấy sự khác biệt ở đây:

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


1

Dòng Objective-C sau đây

NSLog(@"%@", [self traitCollection]);

được thực thi trong trình giả lập iOS 11.0.1 trên iPhone X tạo ra đầu ra sau:

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

Vì vậy, có vẻ như tại một số thời điểm , ai đó tại Apple nghĩ rằng bán kính góc là 39 điểm. Tôi đoán đó là câu trả lời chính thức nhất mà chúng tôi sẽ nhận được. :-) Nhưng như những câu trả lời khác giải thích, thông tin đó không hữu ích lắm ...

Thậm chí nhiều thông tin vô dụng hơn: Một số báo cáo giả lập iOS 11.0 và 11.1 khác _UITraitNameDisplayCornerRadius = 0.000000cho iPhone không có góc tròn (ví dụ: xem câu hỏi SO này ), nhưng trình giả lập cho iOS 12.2 không bao gồm thuộc _UITraitNameDisplayCornerRadiustính trong đầu ra nhật ký UITraitCollectionvà iPhone X thực sự cũng không chạy iOS 11.2.1. Tôi đoán họ đã xóa thuộc tính này khỏi đầu ra nhật ký trong iOS 11.2 hoặc lâu hơn.

PS: Tôi đoán nó không thành vấn đề, nhưng tôi đã nhận được những kết quả này trên Xcode 10.1.


1

Hình dạng của các góc không thể được mô tả như một vòng cung. Tuy nhiên, nó có thể được sao chép bằng API công khai kể từ iOS 11. UIBezierPath.init(roundedRect:cornerRadius:)sẽ tạo ra một hình chữ nhật với các góc được làm tròn liên tục.

Nguồn: https://medium.com/fueled-engineering/continupt-rounded-corners-with-uikit-b575d50ab232

iOS 13 đã giới thiệu một thuộc tính rõ ràng cornerCurvetrên CALayer: https://developer.apple.com/documentation/quartzcore/calayercornercurve

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.