thắc mắc Thắc mắc về triết lý của lập trình iOS

datbeo090

Senior Member
Hiện tại mình đang làm tester cho một app mobile và hnay có 1 anh dev bảo triết lý lập trình iOS có không có resize ảnh nên mình đang có đang có thắc mắc này.
Mình đưa ra trường hợp ví dụ này (các thông số chỉ mang tính tỷ lệ): như trong ảnh thiết kế đính kèm, màn hình điện thoại trên thiết kế diện tích 1000pixel đặt vào trong đó 1 icon với diện tích 300pixel. Nhưng thực tế có 1 số thiết bị màn hình chỉ có 500 điểm ảnh thôi, nếu ko có thuật toán để resize lại diện tích của cái Icon cho phù hợp thì sẽ xảy ra trường hợp vị trí của Icon sẽ bị lệch với thiết kế (ảnh thực tế)
Ae dev iOS trong trường hợp này cho mình hỏi có giải pháp để hiển thị app trên thiết bị nào cũng có tỷ lệ tương đối giống với thiết kế, nhất định phải tuân theo những gì trong link Themes - iOS - Human Interface Guidelines - Apple Developer này. Mình thấy dùng trên IpX ok nhưng sang Ip5 bị lệch quá nhìn rất là kỳ
 

Attachments

  • Ảnh thiết kế.png
    Ảnh thiết kế.png
    11.2 KB · Views: 221
  • Ảnh thực tế.jpg
    Ảnh thực tế.jpg
    37.5 KB · Views: 204
Trường hợp này em cứ mở bug cho nó fix đi em. Nó thấy em newbie nên xạo chó đó. Đừng tin mấy thằng dev nói. Dựa vào requirement mà phang thôi.
 
Hiện tại mình đang làm tester cho một app mobile và hnay có 1 anh dev bảo triết lý lập trình iOS có không có resize ảnh nên mình đang có đang có thắc mắc này.
Mình đưa ra trường hợp ví dụ này (các thông số chỉ mang tính tỷ lệ): như trong ảnh thiết kế đính kèm, màn hình điện thoại trên thiết kế diện tích 1000pixel đặt vào trong đó 1 icon với diện tích 300pixel. Nhưng thực tế có 1 số thiết bị màn hình chỉ có 500 điểm ảnh thôi, nếu ko có thuật toán để resize lại diện tích của cái Icon cho phù hợp thì sẽ xảy ra trường hợp vị trí của Icon sẽ bị lệch với thiết kế (ảnh thực tế)
Ae dev iOS trong trường hợp này cho mình hỏi có giải pháp để hiển thị app trên thiết bị nào cũng có tỷ lệ tương đối giống với thiết kế, nhất định phải tuân theo những gì trong link Themes - iOS - Human Interface Guidelines - Apple Developer này. Mình thấy dùng trên IpX ok nhưng sang Ip5 bị lệch quá nhìn rất là kỳ
https://developer.apple.com/design/...s/icons-and-images/image-size-and-resolution/
 
Không hiểu ý của chủ thớt , cái ảnh thực tế nó có bị bể hay gì đâu ta
Ảnh thiết kế là designer làm dựa theo requiement. Cái ảnh thực tế là ông dev code xong cho ra cái kết quả như vậy vì bảo là không thể làm cho cái Icon ra giữa màn hình ở tất cả các thiết bị của Apple được. Fix cố định pixel của Icon trên tất cả các thiết bị, và liên quan đến vấn đề Safe Area trên từng thiết bị nữa
Do đó sẽ như mình nói sẽ xảy ra trường hợp là nếu dev làm đúng trên IpX do IpX độ phân giải cao hơn Ip5 hoặc Ip6 như ảnh đính kèm sẽ xảy ra trường hợp cái Icon sẽ bị lệch về phía trên hoặc dưới của màn hình
 
Thằng dev ngu nó lừa thớt thôi
Trong lập trình giao diện có 1 khái niệm là Anchoring
Cái hình phải Anchoring ở Centre theo trục Y nữa
Cho mình hỏi về vấn đề Safe area trên từng thiết bị có ảnh hưởng lớn đến vấn đề này không?
 
Ảnh thiết kế là designer làm dựa theo requiement. Cái ảnh thực tế là ông dev code xong cho ra cái kết quả như vậy vì bảo là không thể làm cho cái Icon ra giữa màn hình ở tất cả các thiết bị của Apple được. Fix cố định pixel của Icon trên tất cả các thiết bị, và liên quan đến vấn đề Safe Area trên từng thiết bị nữa
Do đó sẽ như mình nói sẽ xảy ra trường hợp là nếu dev làm đúng trên IpX do IpX độ phân giải cao hơn Ip5 hoặc Ip6 như ảnh đính kèm sẽ xảy ra trường hợp cái Icon sẽ bị lệch về phía trên hoặc dưới của màn hình
Nó chém gió tào lao đấy :whistle:.

Theo ảnh thì gồm 3 thứ là Image, label, text. Kêu nó quẳng 3 cục đó vào 1 UIView, rồi set constraints thế này là như hình design:

Code:
view.translatesAutoresizingMaskIntoConstraints = false
view.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
view.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
 
1609383781796.png


Mình muốn hỏi thêm là các khoảng cách A, B, C (trên ảnh mô tả) trên màn hình là cố định theo số pixel, không thể tự động co/dãn theo từng thiết bị theo tỉ lệ màn hình cho phù hợp được?
 
triết lý trong vấn đề của bác là nên cân chỉnh bằng hàm lerp hay vì if-else giữa 2 con iphone có tỉ lệ chênh lệch lớn nhất, sau đó test và cân chỉnh lại cho đến khi đẹp thì thôi
 
View attachment 350334

Mình muốn hỏi thêm là các khoảng cách A, B, C (trên ảnh mô tả) trên màn hình là cố định theo số pixel, không thể tự động co/dãn theo từng thiết bị theo tỉ lệ màn hình cho phù hợp được?

Nhìn tấm hình ko hiểu ý nó đang diễn ta gì cho lắm, cái khoảng trắng giữa A và B là gì? thường chỗ đó sẽ là thanh Navigation nhưng theo hình thì nó quá to so với một thanh nav bình thường :whistle: .

Nhưng chung quy thì A là cố định, mỗi thiết bị mỗi khác nhưng hoàn toàn có thể set constraints một cách dynamic.

B và C nếu bác muốn nó dynamic thì set nó theo tỉ lệ màn hình:

B = view.frame.size.height * 0.1
C = view.frame.size.height * 0.2
 
Nhìn tấm hình ko hiểu ý nó đang diễn ta gì cho lắm, cái khoảng trắng giữa A và B là gì? thường chỗ đó sẽ là thanh Navigation nhưng theo hình thì nó quá to so với một thanh nav bình thường :whistle: .

Nhưng chung quy thì A là cố định, mỗi thiết bị mỗi khác nhưng hoàn toàn có thể set constraints một cách dynamic.

B và C nếu bác muốn nó dynamic thì set nó theo tỉ lệ màn hình:

B = view.frame.size.height * 0.1
C = view.frame.size.height * 0.2
Mình xin diễn đạt lại vấn đề xem có phải nãy mình diễn đạt sai không:
1609388362795.png
Ví dụ như ảnh mô tả bên trái là thiết kế cho màn hình theo độ phân giải của IpX, ảnh bên phải là màn hình kết quả hiển thị trên Ip6, chiều dài các đoạn thẳng A, B, C, D(đo theo pixel) là khoảng cách cách đối tượng đến rìa Safe Area, đoạn thẳng E là chiều dài Safe Area(cố định trên từng thiết bị Iphone, Ipad).

Dev bên mình đang giải thích là (các con số mình viết chỉ mang tính tượng trưng cho dễ hiểu): code theo thiết kế cho màn hình IpX, "diện tích Icon màu xanh lá cây là cố định trên mọi thiết bị", với chiều dài đoạn thẳng E dài 2000px so với đoạn thẳng D dài 500px, A dài 400px. Do đó khi sử dụng trên Ip6 đoạn E dài 1500px, Ip5 đoạn E dài 1000px vì diện tích Icon màu xanh lá cố định nên để hiển thị đầy đủ sẽ bị lệch lên trên như kết quả bên phải
 
Mình xin diễn đạt lại vấn đề xem có phải nãy mình diễn đạt sai không:
View attachment 350491Ví dụ như ảnh mô tả bên trái là thiết kế cho màn hình theo độ phân giải của IpX, ảnh bên phải là màn hình kết quả hiển thị trên Ip6, chiều dài các đoạn thẳng A, B, C, D(đo theo pixel) là khoảng cách cách đối tượng đến rìa Safe Area, đoạn thẳng E là chiều dài Safe Area(cố định trên từng thiết bị Iphone, Ipad).

Dev bên mình đang giải thích là (các con số mình viết chỉ mang tính tượng trưng cho dễ hiểu): code theo thiết kế cho màn hình IpX, "diện tích Icon màu xanh lá cây là cố định trên mọi thiết bị", với chiều dài đoạn thẳng E dài 2000px so với đoạn thẳng D dài 500px, A dài 400px. Do đó khi sử dụng trên Ip6 đoạn E dài 1500px, Ip5 đoạn E dài 1000px vì diện tích Icon màu xanh lá cố định nên để hiển thị đầy đủ sẽ bị lệch lên trên như kết quả bên phải
Dev thì tào lao. Còn design thì hơi kém. Design chủ đạo bây giờ là tỉ lệ chứ chả ai set cứng khoản cách cả.
các thông số có thể set cứng là margin, border. Chứ còn image giờ nên tính theo tỉ lệ cả
 
Mình xin diễn đạt lại vấn đề xem có phải nãy mình diễn đạt sai không:
View attachment 350491Ví dụ như ảnh mô tả bên trái là thiết kế cho màn hình theo độ phân giải của IpX, ảnh bên phải là màn hình kết quả hiển thị trên Ip6, chiều dài các đoạn thẳng A, B, C, D(đo theo pixel) là khoảng cách cách đối tượng đến rìa Safe Area, đoạn thẳng E là chiều dài Safe Area(cố định trên từng thiết bị Iphone, Ipad).

Dev bên mình đang giải thích là (các con số mình viết chỉ mang tính tượng trưng cho dễ hiểu): code theo thiết kế cho màn hình IpX, "diện tích Icon màu xanh lá cây là cố định trên mọi thiết bị", với chiều dài đoạn thẳng E dài 2000px so với đoạn thẳng D dài 500px, A dài 400px. Do đó khi sử dụng trên Ip6 đoạn E dài 1500px, Ip5 đoạn E dài 1000px vì diện tích Icon màu xanh lá cố định nên để hiển thị đầy đủ sẽ bị lệch lên trên như kết quả bên phải
Thằng dev bn năm exp rồi mà phát biểu ngu học như này :beat_brick: hỏi nó xem biết dùng size class k? Không biết thì hỏi sao mầy pass pv dc hay thế
Còn về phần designer cũng thiếu exp nếu chỉ quăng 1 cái mockup làm cho tất cả thiết bị thì nên cung cấp thông số point width height padding ... chi tiết trên từng thiết bị hoặc design theo tỉ lệ nhé
 
Mình xin diễn đạt lại vấn đề xem có phải nãy mình diễn đạt sai không:
View attachment 350491Ví dụ như ảnh mô tả bên trái là thiết kế cho màn hình theo độ phân giải của IpX, ảnh bên phải là màn hình kết quả hiển thị trên Ip6, chiều dài các đoạn thẳng A, B, C, D(đo theo pixel) là khoảng cách cách đối tượng đến rìa Safe Area, đoạn thẳng E là chiều dài Safe Area(cố định trên từng thiết bị Iphone, Ipad).

Dev bên mình đang giải thích là (các con số mình viết chỉ mang tính tượng trưng cho dễ hiểu): code theo thiết kế cho màn hình IpX, "diện tích Icon màu xanh lá cây là cố định trên mọi thiết bị", với chiều dài đoạn thẳng E dài 2000px so với đoạn thẳng D dài 500px, A dài 400px. Do đó khi sử dụng trên Ip6 đoạn E dài 1500px, Ip5 đoạn E dài 1000px vì diện tích Icon màu xanh lá cố định nên để hiển thị đầy đủ sẽ bị lệch lên trên như kết quả bên phải
Nếu giữ nguyên kích thước của tấm hình thì D với A nó phải lệch đi 1 đoạn là đúng rồi bác, vì để đảm bảo hình nằm giữa thì phải thay đổi D vs A:

Đây là cái em vừa làm thử:

1609402708507.png
 
Nếu giữ nguyên kích thước của tấm hình thì D với A nó phải lệch đi 1 đoạn là đúng rồi bác, vì để đảm bảo hình nằm giữa thì phải thay đổi D vs A:

Đây là cái em vừa làm thử

View attachment 350720
Hiện tại mình hiểu để cân đối thì phải resize cái Icon cho nó phù hợp với cái màn hình của Ip5 thì mới đảm bảo được tỉ lệ vị trí theo thiết kế.
Quay trở lại vấn đề resize/scale ảnh. Mình thắc mắc là code của iOS có thuật toán để nó tối ưu được hình ảnh cho cân đối trên mọi thiết bị không như trên Android không hay cái ảnh Icon phải giữ nguyên độ phân giải
 
Hiện tại mình hiểu để cân đối thì phải resize cái Icon cho nó phù hợp với cái màn hình của Ip5 thì mới đảm bảo được tỉ lệ vị trí theo thiết kế.
Quay trở lại vấn đề resize/scale ảnh. Mình thắc mắc là code của iOS có thuật toán để nó tối ưu được hình ảnh cho cân đối trên mọi thiết bị không như trên Android không hay cái ảnh Icon phải giữ nguyên độ phân giải

Em vẫn ko hiểu ý bác như thiết kế là như thế nào? Ý bác là cái khoảng cách A phải luôn bằng nhau? Thế thì làm sao mà được, vì 1 con tràn viền, 1 con thì không :whistle:
1609403445875.png
 

Attachments

  • 1609403351281.png
    1609403351281.png
    1.2 MB · Views: 67
Em vẫn ko hiểu ý bác như thiết kế là như thế nào? Ý bác là cái khoảng cách A phải luôn bằng nhau? Thế thì làm sao mà được, vì 1 con tràn viền, 1 con thì không :whistle:
View attachment 350751
Ý mình không phải là cần khoảng cách phải bằng nhau cố định bao nhiêu pixel mà là cái Icon hiển thị full HD trên con IpX nhưng chỉ hiển thị 480p trên con Ip5 để cho cân đối khoảng cách tới rìa màn hình tương đối giống thiết kế được không
Trên con IpX màn to độ phân giải cao hiển thị to OK nhưng màn con Ip5 bé xíu độ phân giải thấp nhét cái Icon to như cái mả bố thằng ăn mày vào nhìn mất cân đối
 
Back
Top