UIAlertController harakat jadvali kengligini oling

Men hozir biroz vaqt ilgari boshimni devorga urgan edim:

UIAlertController ish varag'ining ko'rinishini kengligini qanday olish mumkin?

alert.view.frame.width so'zini aytish, view.frame.width ni beradi.

Bundan tashqari, bu savolni ko'rdim, lekin u ishlamayapti: bu faqat ogohlantirish ramkasini o'zgartiradi va men kenglikdan qanday qilib olishim mumkinligini ko'ring.

Oldindan rahmat.

1
" alert.view.frame.width " view.frame.width "-" To'g'ri natijaga erishmoqchiman, ushbu bayonot bilan nima demoqchisiz? "
qo'shib qo'ydi muallif xoudini, manba
" alert.view.frame.width " view.frame.width "-" To'g'ri natijaga erishmoqchiman, ushbu bayonot bilan nima demoqchisiz? "
qo'shib qo'ydi muallif xoudini, manba
Men bunga juda yoqdi.
qo'shib qo'ydi muallif Dopapp, manba
qo'shib qo'ydi muallif ronatory, manba
qo'shib qo'ydi muallif ronatory, manba
@ kengaytirgich, men kenglikni o'rnatmoqchi emasman, faqat uni olishni istayman
qo'shib qo'ydi muallif IHaveAQuestion, manba
@ kengaytirgich, men kenglikni o'rnatmoqchi emasman, faqat uni olishni istayman
qo'shib qo'ydi muallif IHaveAQuestion, manba

6 javoblar

.actionSheet turi UIAlertController ning kengligi UIWindow (portret rejimida) kamida 10 nuqta bo'shliq bo'lib, har bir tomonda qurilmaning yo'nalishini belgilang.

Masalan, kengligi 375 ball bo'lgan iPhone 7-da:

enter image description here

Hech shubhasiz, 355 ta qiymat alert.view.frame.width dan olingan qiymatdan iborat, chunki bu qiymat present (_: animatsiya: completion: ) , ya'ni ko'rinish paydo bo'lgandan keyin.

2
qo'shib qo'ydi
@IHaveAQuestion Nima uchun cheklovlardan foydalanmaslik kerak?
qo'shib qo'ydi muallif xoudini, manba
Ko'rinishni o'z ichiga olgan ko'rinish tekshiruvi hali taqdim etilmagani uchun. Nima uchun u 375 va 0 emas, balki ishonchim komil emas, ammo "hujjatsiz xatti-harakatlar" deb atash mumkin bo'lgan narsaga tushib qolganiga ishonaman.
qo'shib qo'ydi muallif xoudini, manba
@IHaveAQuestion Buning uchun nima kerak? Ehtimol, qadr-qimmatni to'ldirish blokining ichidan olish sizga etarli emasmi?
qo'shib qo'ydi muallif xoudini, manba
O'ylaymanki, o'zgarish va, ehtimol, mavjud tugatish blokida to'g'ri o'lchamda harakatlanuvchi narsa yaxshi. Men cheklovlardan qo'rqaman.
qo'shib qo'ydi muallif IHaveAQuestion, manba
Uyg'oning ichida maxsus ko'rinishni taqdim qilmoqchi edim
qo'shib qo'ydi muallif IHaveAQuestion, manba
Bundan tashqari, u iPad uchun farq qiladi, shuning uchun men kengligi olish uchun noto'g'ri kodlangan usulga muhtojman
qo'shib qo'ydi muallif IHaveAQuestion, manba
alert ni taqdim etishdan oldin alert.view.frame.width deb ataganimda, men olgan kenglik 375. Nima uchun bu?
qo'shib qo'ydi muallif IHaveAQuestion, manba

.actionSheet turi UIAlertController ning kengligi UIWindow (portret rejimida) kamida 10 nuqta bo'shliq bo'lib, har bir tomonda qurilmaning yo'nalishini belgilang.

Masalan, kengligi 375 ball bo'lgan iPhone 7-da:

enter image description here

Hech shubhasiz, 355 ta qiymat alert.view.frame.width dan olingan qiymatdan iborat, chunki bu qiymat present (_: animatsiya: completion: ) , ya'ni ko'rinish paydo bo'lgandan keyin.

2
qo'shib qo'ydi
@IHaveAQuestion Nima uchun cheklovlardan foydalanmaslik kerak?
qo'shib qo'ydi muallif xoudini, manba
Ko'rinishni o'z ichiga olgan ko'rinish tekshiruvi hali taqdim etilmagani uchun. Nima uchun u 375 va 0 emas, balki ishonchim komil emas, ammo "hujjatsiz xatti-harakatlar" deb atash mumkin bo'lgan narsaga tushib qolganiga ishonaman.
qo'shib qo'ydi muallif xoudini, manba
@IHaveAQuestion Buning uchun nima kerak? Ehtimol, qadr-qimmatni to'ldirish blokining ichidan olish sizga etarli emasmi?
qo'shib qo'ydi muallif xoudini, manba
O'ylaymanki, o'zgarish va, ehtimol, mavjud tugatish blokida to'g'ri o'lchamda harakatlanuvchi narsa yaxshi. Men cheklovlardan qo'rqaman.
qo'shib qo'ydi muallif IHaveAQuestion, manba
Uyg'oning ichida maxsus ko'rinishni taqdim qilmoqchi edim
qo'shib qo'ydi muallif IHaveAQuestion, manba
Bundan tashqari, u iPad uchun farq qiladi, shuning uchun men kengligi olish uchun noto'g'ri kodlangan usulga muhtojman
qo'shib qo'ydi muallif IHaveAQuestion, manba
alert ni taqdim etishdan oldin alert.view.frame.width deb ataganimda, men olgan kenglik 375. Nima uchun bu?
qo'shib qo'ydi muallif IHaveAQuestion, manba

xoudini's Answer is definitely a solution. But a disadvantage could be the little delay of adding the custom view with the right width in the completion block. See the gif:

enter image description here

Shuning uchun ushbu kengaytmani UIDevice uchun va undan keyin modelName , siz turli xil qurilmalar ish varag'ining kengligi qiymatlarini belgilashingiz mumkin (ehtimol biroz xakerlik, lekin kechikishdan qochib, kenglikni tugatish blokidan oldin sozlashingiz mumkin). IOS10 ning hozirda qo'llab-quvvatlanadigan qurilmalaridagi harakat jadvallarining turli kengliklari quyidagicha:

  • iPhone5/iPhone5s/iPhoneSE: 300
  • iPhone6 ​​/ iPhone6s/iPhone7: 355
  • iPhone6Plus/iPhone6sPlus/iPhone7Plus: 394

  • iPad 9.7/12.9/Retina/Air1/Air2: 300

0
qo'shib qo'ydi

xoudini's Answer is definitely a solution. But a disadvantage could be the little delay of adding the custom view with the right width in the completion block. See the gif:

enter image description here

Shuning uchun ushbu kengaytmani UIDevice uchun va undan keyin modelName , siz turli xil qurilmalar ish varag'ining kengligi qiymatlarini belgilashingiz mumkin (ehtimol biroz xakerlik, lekin kechikishdan qochib, kenglikni tugatish blokidan oldin sozlashingiz mumkin). IOS10 ning hozirda qo'llab-quvvatlanadigan qurilmalaridagi harakat jadvallarining turli kengliklari quyidagicha:

  • iPhone5/iPhone5s/iPhoneSE: 300
  • iPhone6 ​​/ iPhone6s/iPhone7: 355
  • iPhone6Plus/iPhone6sPlus/iPhone7Plus: 394

  • iPad 9.7/12.9/Retina/Air1/Air2: 300

0
qo'shib qo'ydi

Garchi bu erga kechiksam ham, lekin hech qachon kechroq emasman.

Ogohlantirish ko'rinishi tekshiruvi uchun kenglik cheklovlar bo'yicha o'rnatiladi. Ogohlantirish tekshiruvining kengligini olish uchun quyidagilarni foydalanishingiz mumkin:

for constraint in self.alertView.subviews[0].constraints {

  if constraint.firstAttribute == NSLayoutAttribute.width {
  print("\(constraint.constant)")
  break
  }
}
0
qo'shib qo'ydi

Garchi bu erga kechiksam ham, lekin hech qachon kechroq emasman.

Ogohlantirish ko'rinishi tekshiruvi uchun kenglik cheklovlar bo'yicha o'rnatiladi. Ogohlantirish tekshiruvining kengligini olish uchun quyidagilarni foydalanishingiz mumkin:

for constraint in self.alertView.subviews[0].constraints {

  if constraint.firstAttribute == NSLayoutAttribute.width {
  print("\(constraint.constant)")
  break
  }
}
0
qo'shib qo'ydi