ios - tools - لا يمكن تغيير ارتفاع زر تسجيل الدخول في فبسكلوجينكيت؟




facebook developer tools (4)

كملجأ أخير، جرب تنفيذ الزر المخصص الخاص بك ليكون بمثابة زر تسجيل الدخول إلى فاسيبوك. قد تمنع تخصيص الزر من سك. https://developers.facebook.com/docs/swift/login - هناك قسم هنا مع رمز المثال - "زر دخول مخصص". لا يبدو معقدا.

أنا باستخدام FBSDKLoginKit في دائرة الرقابة الداخلية مع سويفت.

حتى وقت قريب كان يعمل بشكل مثالي، ولكن أنا الآن لا يمكن تجاوز ارتفاع زر بلدي في القصة المصورة؟

ارتفاع الزر هو الآن أصغر بكثير لسبب ما. لقد حاولت وضع قيود الارتفاع للزر، ووضع الزر في عرض المكدس وتعيين لملء نسبيا وحتى تجاوز ارتفاع الزر في سك مع أي حظ.

إذا قمت بتغيير الزر إلى UIButton العادي القيود تخطيط تعمل تماما.

هذا هو ما يشبه الزر عند تشغيل التطبيق.

هذه هي الطريقة التي أود أن الزر للنظر - حجم الحكمة.


لقد واجهت هذه المشكلة أيضا. السبب في ذلك موضح في دليل الترقية من 4.19.0 إلى 4.19.0 :

تم FBSDKLoginButton واجهة المستخدم فبسكلوجينبوتون في 4.19.0. بدلا من "تسجيل الدخول مع الفيسبوك"، الزر يعرض الآن "مواصلة مع الفيسبوك". يتم تغيير لون الزر إلى # 4267B2 من # 3B5998. تم إصلاح ارتفاع الزر الآن عند 28 بسبب استخدام حجم الخط الأصغر والحشوات حول شعار فاسيبوك أكبر.

الحل الوحيد الذي وجدت حتى الآن هو تقليل إصدار سك إلى 4.18.0 (فعلت هذه المهمة بالنسبة لي).

من الممكن أن يتناول فب هذه المشكلة (... التي أنشأها لكثير من الأشخاص) في أحد التحديثات المستقبلية ل سك.

نحو حل أكثر دواما، يمكننا أن نرى التغييرات المحددة التي تسببت هذا، على جيثب . التغيير أجد معظم المشبوهة يبدأ على الخط 194 :

[self addConstraint:[NSLayoutConstraint constraintWithItem:self
                                                 attribute:NSLayoutAttributeHeight
                                                 relatedBy:NSLayoutRelationEqual
                                                    toItem:nil
                                                 attribute:NSLayoutAttributeNotAnAttribute
                                                multiplier:1
                                                  constant:28]];

إذا تم إزالة القيد أعلاه / تعطيل، فإنه يمكن أن يساعد على عكس الوضع. يجب أن تبدو تقريبا مثل هذا (ليس لدي إيد في متناول اليد في وقت كتابة هذا التقرير):

// Obtain all constraints for the button:
let layoutConstraintsArr = fbLoginButton.constraints
// Iterate over array and test constraints until we find the correct one:
for lc in layoutConstraintsArr { // or attribute is NSLayoutAttributeHeight etc.
   if ( lc.constant == 28 ){
     // Then disable it...
     lc.active = false
     break
   }
}

عندما أحصل على فرصة لاختبار ما سبق أو إذا وجدت حل أفضل، وسوف تحديث الجواب.


أما بالنسبة الآن زر الفيسبوك لديها فقط واحد القيد وهو القيد الارتفاع ويمكنك فقط إزالة جميع القيود على زر وإضافة لك.

facebookSignInButton.removeConstraints(facebookSignInButton.constraints)

ولكن بالطبع هذا يمكن أن يتغير في المستقبل، ويمكنك إزالة القيد الذي لا تريد. ربما يكون الحل الأفضل إذا قمت بإزالة هذا القيد الإشكالي فقط.

if let facebookButtonHeightConstraint = facebookSignInButton.constraints.first(where: { $0.firstAttribute == .height }) {
    facebookSignInButton.removeConstraint(facebookButtonHeightConstraint)
}

لذلك أخذت حل @ ديف-إيل و أنب عليه إلى شيء أكثر قليلا دليل في المستقبل. أنا جديد جدا لهذا الأمر استغرق مني بضع ساعات لمعرفة ذلك، ولكن اعتقدت أن حصة لأن ذلك على وجه التحديد تعطيل القيود الارتفاع على أساس كونه قيدا الارتفاع بدلا من استنادا إلى قيمة ثابتة.

لقد استخدمت عرضا فرعيا مصنفا كزر فاسيبوك في لوحة القصص وقم بتعيين القيد الجديد هناك.

أنا أفضل هذه الطريقة ويشعر نهجا أكثر نظافة.

ملاحظة: أعتقد لقيد الارتفاع سيكون دائما القيمة الأولى ولكن يرجى تصحيح لي إذا كنت مخطئا وسوف تحديث مع تحرير. كما ذكرت أنا جديد على هذا

تحرير: قررت أن تدرج قيمة ثابتة من 28 للسماح لقصص ارتفاع القصة بلدي ليتم تخطي أثناء الإزالة. هذا غير مطلوب إذا قمت بإضافة القيد برمجيا بعد الإزالة

for const in fbLoginButton.constraints{
  if const.firstAttribute == NSLayoutAttribute.height && const.constant == 28{
    fbLoginButton.removeConstraint(const)
  }
}






facebook-ios-sdk