অটোলেআউট - ইউআইবুটনের অভ্যন্তরীণ আকারে শিরোনাম ইনসেট অন্তর্ভুক্ত নয়


196

আমার যদি অটোলেআউট ব্যবহার করে কোনও ইউআইবাটন ব্যবস্থা করা থাকে তবে এর আকারটি এর সামগ্রীতে ফিট করার জন্য দুর্দান্তভাবে অ্যাডজাস্ট করে।

যদি আমি কোনও চিত্র সেট button.imageকরে রাখি তবে ইন্সট্রিনিক আকার আবার এটির জন্য মনে হয়।

যাইহোক, আমি যদি titleEdgeInsetsবোতামটির টিপটি করি তবে লেআউটটি এর জন্য অ্যাকাউন্ট করে না এবং পরিবর্তে বোতামের শিরোনামটি কেটে দেয়।

আমি কীভাবে তা নিশ্চিত করতে পারি যে বোতামটির অভ্যন্তরীণ প্রস্থটি ইনসেটের জন্য অ্যাকাউন্ট করে?

এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা:

আমি নিম্নলিখিত ব্যবহার করছি:

[self.backButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)];

লক্ষ্যটি হ'ল চিত্র এবং পাঠ্যের মধ্যে কিছু বিচ্ছেদ যুক্ত করা।


3
আপনি কি রাডার হিসাবে ফাইল করেছেন? এটি অবশ্যই ইউআইবাটনের অভ্যন্তরীণ আকারের গণনার মধ্যে একটি ত্রুটি বলে মনে হচ্ছে।
রায়ান পুলস

1
আমি একটি রাডার ফাইল করার জন্য প্রস্তুত ছিলাম, তবে এটি আসলে প্রত্যাশিত আচরণ বলে মনে হচ্ছে। এটি ইউআইবাটনের * এজআইসেটস বৈশিষ্ট্যগুলিতে নথিভুক্ত করা হয়েছে: "আপনার নির্দিষ্ট করা ইনসেটগুলি বোতামের পাঠ্যের মাপের জন্য আয়তক্ষেত্রটি আকার দেওয়ার পরে শিরোনাম আয়তক্ষেত্র প্রয়োগ করা হয় Thus সুতরাং ইতিবাচক ইনসেট মানগুলি শিরোনামের পাঠ্যটি ক্লিপ করতে পারে [[...] বোতামটি এই সম্পত্তিটি আন্তঃসৌনিক আকার এবং আকারটি নির্ধারণ করতে ব্যবহার করে না যে এটি:
গিলাইম অ্যালগিস

7
@GuillaumeAlgis আমি তর্ক করবে যদিও এই বিবৃত আচরণ, এটা না সব এক যখন স্বয়ংক্রিয়-বহির্বিন্যাস ব্যবহার ঘটতে আশা কি এ। আমি একটি বাগ দায়ের করেছি এবং অন্যকেও ফাইল করার জন্য উত্সাহিত করব।
স্মরণে

আপনি যদি এখানে রাডার বাগের সাথে লিঙ্ক করতে পারেন, আমরা কি এটিতে ক্লিক করতে এবং এটিতে +1 করতে পারি?
gprasant

1
titleEdgeInsetডকুমেন্টেশন থেকে : The insets you specify are applied to the title rectangle after that rectangle has been sized to fit the button’s text. Thus, positive inset values may actually clip the title text. সুতরাং ইনসেট যোগ করে আপনি বোতামটি অবশ্যই পাঠ্যটি ক্লিপ করতে বাধ্য করছেন
মার্কো পাপালার্ডো

উত্তর:


192

আপনি কোনও পদ্ধতি ওভাররাইড না করে বা একটি স্বেচ্ছাসেবী প্রস্থের সীমাবদ্ধতা স্থাপন না করেই এটি সমাধান করতে পারেন। আপনি ইন্টারফেস বিল্ডারে নিম্নলিখিত হিসাবে এটি সব করতে পারেন।

  • স্বতঃস্ফূর্ত বোতামের প্রস্থটি শিরোনামের প্রস্থ এবং আইকন প্রস্থ এবং বাম এবং ডান সামগ্রী প্রান্তের ইনসেটগুলি থেকে উদ্ভূত হয় ।

  • যদি কোনও বোতামে একটি চিত্র এবং পাঠ্য উভয় থাকে, তবে সেগুলি কোনও গোষ্ঠী হিসাবে কেন্দ্রিক, যার মধ্যে কোনও প্যাডিং নেই।

  • যদি আপনি কোনও বাম সামগ্রী অন্তর্ভুক্ত করেন তবে এটি পাঠ্যের সাথে সম্পর্কিত গণনা করা হয়, পাঠ্য + আইকন নয়।

  • যদি আপনি কোনও নেতিবাচক বাম ইমেজটি ইনসেট সেট করেন তবে চিত্রটি বাম দিকে টান দেওয়া হয়েছে তবে সামগ্রিক বোতামের প্রস্থটি ক্ষতিগ্রস্থ হবে না।

  • যদি আপনি কোনও নেতিবাচক বাম ইমেজটি ইনসেট সেট করেন তবে আসল বিন্যাসটি সেই মানটির অর্ধেকটি ব্যবহার করে। সুতরাং একটি ইন -20 পয়েন্ট ইনসেট পেতে, আপনাকে অবশ্যই ইন্টারফেস বিল্ডারে একটি -40 পয়েন্ট বাম ইনসেট মানটি ব্যবহার করতে হবে।

সুতরাং আপনি উভয় পছন্দসই বাম ইনসেট এবং আইকন এবং পাঠ্যের মধ্যে অভ্যন্তরীণ প্যাডিংয়ের জন্য জায়গা তৈরি করতে যথেষ্ট পরিমাণে বাম সামগ্রীর সরবরাহ করুন এবং তারপরে আইকন এবং পাঠ্যের মধ্যে প্যাডিংয়ের পরিমাণ দ্বিগুণ করে আপনি বাম আইকনটি স্থানান্তর করুন। ফলাফলটি হ'ল সমান বাম এবং ডান সামগ্রীর ইনসেটের একটি বোতাম এবং একটি পাঠ্য এবং আইকন জুড়ি যা একটি গ্রুপ হিসাবে কেন্দ্রীভূত হয়, যার মধ্যে নির্দিষ্ট পরিমাণে প্যাডিং থাকে।

কিছু উদাহরণ মান:

// Produces a button with the layout:
// |-20-icon-10-text-20-|
// AutoLayout intrinsic width works as you'd desire.
button.contentEdgeInsets = UIEdgeInsetsMake(10, 30, 10, 20)
button.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0)

আসল বিন্যাস কেন নেতিবাচক বাম ইনসেট মানের অর্ধেক ব্যবহার করে ?? আমিও একই সমস্যার মুখোমুখি হয়েছি!
টনি লিন

1
এটি দুর্দান্ত যে এখানে একটি কার্যনির্বাহী রয়েছে, তবে আমি আশা করি এর অদ্ভুত আচরণটি ন্যায়সঙ্গত করার জন্য এটি ব্যবহৃত হয়নি UIButton
funct7

205

নেতিবাচক এবং ধনাত্মক শিরোনাম এবং বিষয়বস্তু ইনসেটের সংমিশ্রণটি ব্যবহার করে আপনি ইন্টারফেস বিল্ডারে (কোনও কোড না লিখে) কাজ করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

আপডেট : এক্সকোড 7 এর একটি বাগ রয়েছে যেখানে আপনি Rightইনসেট ক্ষেত্রে নেতিবাচক মান প্রবেশ করতে পারবেন না , তবে মানটি হ্রাস করতে আপনি এর পাশের স্টিপার নিয়ন্ত্রণটি ব্যবহার করতে পারেন। (ধন্যবাদ স্টুয়ার্ট)

এটি করার ফলে চিত্র এবং শিরোনামের মধ্যে 8pt ব্যবধান যুক্ত হবে এবং একই পরিমাণে বোতামটির অভ্যন্তরীণ প্রস্থ বৃদ্ধি পাবে। এটার মত:

এখানে চিত্র বর্ণনা লিখুন


2
এটি বোতামের প্রস্থ বৃদ্ধি করতে অটোলেআউটকে বাড়াতে কন্টেন্টএডজিনসেটস (যা বগি নয়) ব্যবহার করছে। এবং লেবেলটি ডানদিকে ফাঁকা জায়গায় নিয়ে যান। শিরোনাম প্রান্ত ইনসেট বাগটি ঠিকঠাক করার চতুর উপায়।
ugur

7
এই কৌশল আর কাজ করে না। ইন্টারফেস রচয়িতা আর ঋণাত্মক মান গ্রহণ করে Rightক্ষেত্র।
জরিস ম্যানস

7
@ জরিসম্যানস আপনি এতে নেতিবাচক মানগুলি টাইপ করতে পারবেন না , তবে এটি পাঠ্য ক্ষেত্রের ডানদিকে স্টিপার নিয়ন্ত্রণ ব্যবহার করে প্রয়োজনীয় নেতিবাচক মান থেকে নামার জন্য আমার পক্ষে কাজ করেছে ... চিত্রটি দেখুন!
স্টুয়ার্ট

3
এটি প্রথম উত্তর হওয়া উচিত, এটি এখানে নিচে কেন? এটি সন্ধানের আগে আমি অন্য 5 টি চেষ্টা করে দেখেছি ...
লর্ড জসোল্ট

2
আমি UIButton এ টেক্সটটি কেন্দ্র করতে কন্টেন্টের 16 টি ইনসেট তৈরি করেছি
coolcool1994

96

intrinsicContentSizeইউআইভিউতে পদ্ধতিটি কেন ওভাররাইড করা হচ্ছে না ? উদাহরণ স্বরূপ:

- (CGSize) intrinsicContentSize
{
    CGSize s = [super intrinsicContentSize];

    return CGSizeMake(s.width + self.titleEdgeInsets.left + self.titleEdgeInsets.right,
                      s.height + self.titleEdgeInsets.top + self.titleEdgeInsets.bottom);
}

এটি অটোলেআউট সিস্টেমকে বলবে যে ইনসেটগুলির অনুমতি দেওয়ার জন্য এবং সম্পূর্ণ পাঠ্যটি দেখানোর জন্য এটি বোতামটির আকার বাড়িয়ে তুলতে হবে। আমি নিজের কম্পিউটারে নেই, তাই আমি এটি পরীক্ষা করিনি।


1
আমি যতদূর জানি বাটনগুলি ওভাররাইড করা উচিত নয়। সমস্যাটি হ'ল প্রতিটি বোতামের ধরণটি একটি আলাদা সাবক্লাস দ্বারা প্রয়োগ করা হয়।
সুলতান

2
intrinsicContentSizeইউআইভিউ-তে একটি পদ্ধতি, ইউআইবাটন নয়, তাই আপনি কোনও ইউআইবাটন পদ্ধতিতে গণ্ডগোল করবেন না। অ্যাপল মনে করে না যে এটি একটি সমস্যা: "এই পদ্ধতিটি ওভাররাইড করা একটি কাস্টম ভিউটিকে তার সামগ্রীর উপর ভিত্তি করে আকারটি কী আকার দিতে চায় তা লেআউট সিস্টেমের সাথে যোগাযোগ করার অনুমতি দেয়" " এবং ওপি বিভিন্ন বোতাম সম্পর্কে কিছুই বলেনি, কেবল একটি।
মার্টেন

1
এটি অবশ্যই কাজ করে এবং আমি যে সমাধানটি দিয়েছিলাম সেটাই এটি। intrinsicContentSizeপ্রকৃতপক্ষে ইউআইভিউ-র একটি পদ্ধতি এবং ইউআইবিটন হ'ল ইউআইভিউ'র একটি সাবক্লাস তাই অবশ্যই আপনি এই পদ্ধতিটিকে ওভাররাইড করতে পারেন; অ্যাপলের ডক্সে কিছুই বলে না যে আপনার উচিত নয়। মার্টেনের ওভাররাইড পদ্ধতি ব্যবহার করে কেবল একটি ইউআইবাটন সাবক্লাস তৈরি করুন এবং ইন্টারফেস বিল্ডারে আপনার ইউআইবাটনটিকে আপনার ইউআইআই বাটনসব্লাক্লাস টাইপ করুন এবং এটি পুরোপুরি কার্যকর হবে।
n8tr

37
intrinsicContentSizeUIButton এর জন্য আমার কাছে মনে হচ্ছে এডিজিনসেটস শিরোনামটি যুক্ত করা উচিত, আমি অ্যাপলের সাথে একটি বাগ ফাইল করতে যাচ্ছি।
প্রগ্রেমার

6
আমি সম্মত, এবং ইমেজএডজেসস জন্য একই।
রিকার্ডো সানচেজ-সায়েজ

87

আপনি কীভাবে কীটপতঙ্গগুলি সেট করছেন তা আপনি নির্দিষ্ট করেন নি, সুতরাং আমি অনুমান করছি যে আপনি শিরোনামএডজেইনসেটগুলি ব্যবহার করছেন কারণ আমি যে একই প্রভাব পাচ্ছি তা আমি দেখতে পাচ্ছি। আমি যদি এর পরিবর্তে ContentEdgeInsets ব্যবহার করি তবে এটি সঠিকভাবে কাজ করে।

- (IBAction)ChangeTitle:(UIButton *)sender {
    self.button.contentEdgeInsets = UIEdgeInsetsMake(0,20,0,20);
    [self.button setTitle:@"Long Long Title" forState:UIControlStateNormal];
}

আমি প্রকৃতপক্ষে শিরোনামএডজিনসেটস ব্যবহার করছি। আমার ইমেজ থেকে শিরোনামটি দূর করতে হবে, বোতামের প্রান্ত থেকে চিত্রটি নয়। হয়তো আমার কিছু প্যাডিং সহ একটি চিত্র ব্যবহার করা উচিত? হ্যাকি মনে হচ্ছে।
বেন প্যাকার্ড 4

এটি অটোলেআউটটির সাথে একযোগে পুরোপুরি কাজ করে, আপনাকে ধন্যবাদ!
Cal এস

3
এটি আরও ভাল সমাধান, কারণ এটি অন্তর্নিহিত কন্টেন্টসাইজটি স্পর্শ না করে আপনি যা চান ঠিক তা করে।
RyJ

28
কোনও চিত্র ব্যবহার করার সময় এবং চিত্র এবং শিরোনামের মধ্যে ইনসেটটি সামঞ্জস্য করার প্রয়োজন হলে এটি প্রশ্নের উত্তর দেয় না!
ব্রডি রবার্টসন

23

এবং সুইফটের পক্ষে এটি কাজ করেছে:

extension UIButton {
    override open var intrinsicContentSize: CGSize {
        let intrinsicContentSize = super.intrinsicContentSize

        let adjustedWidth = intrinsicContentSize.width + titleEdgeInsets.left + titleEdgeInsets.right
        let adjustedHeight = intrinsicContentSize.height + titleEdgeInsets.top + titleEdgeInsets.bottom

        return CGSize(width: adjustedWidth, height: adjustedHeight)
    }
}

ইউ সুইফটকে ভালবাসি


1
আপনার ধারণা না করা সত্ত্বেও, এই ক্ষেত্রে সাবক্লাস করা ভাল because কারণ অ্যাপল ডক্স স্পষ্টভাবে জানিয়েছে যে অভ্যন্তরীণ আকারটি তার গণনায় শিরোনামএডজিনসেটস অন্তর্ভুক্ত করে না এবং তাই কোনও এক্সটেনশন ব্যবহার করে আপনি কেবল অ্যাপলের প্রত্যাশা নয় বরং অন্যান্য সমস্ত বিকাশকারী যারা পড়েন তাদের লঙ্ঘন করছেন ডকস
সাইরেন্স

18

এই থ্রেডটি কিছুটা পুরানো, তবে আমি কেবল এটির মধ্যে চলে এসেছি এবং নেতিবাচক ইনসেটটি ব্যবহার করে এটি সমাধান করতে সক্ষম হয়েছি। উদাহরণস্বরূপ, আপনার পছন্দসই প্যাডিং মানগুলি এখানে প্রতিস্থাপন করুন:

UIButton* myButton = [[UIButton alloc] init];
// setup some autolayout constraints here
myButton.titleEdgeInsets = UIEdgeInsetsMake(-desiredBottomPadding,
                                            -desiredRightPadding,
                                            -desiredTopPadding,
                                            -desiredLeftPadding);

ডান অটোলেআউট সীমাবদ্ধতার সাথে একত্রিত হয়ে আপনি একটি স্বয়ং-পুনরায় আকার দেওয়ার বোতামটি দিয়ে শেষ করবেন যাতে একটি চিত্র এবং পাঠ্য রয়েছে! সাথে নীচে দেখাdesiredLeftPadding10 এ সেট ।

চিত্র এবং সংক্ষিপ্ত পাঠ্য সহ বোতাম

চিত্র এবং দীর্ঘ পাঠ্য সহ বোতাম

আপনি দেখতে পাচ্ছেন যে বোতামটির আসল ফ্রেমটি লেবেলটিকে আবদ্ধ করে না (যেহেতু লেবেলটি ডানদিকে 10 টি পয়েন্ট সরানো হয়েছে, সীমার বাইরে), তবে আমরা পাঠ্য এবং চিত্রের মধ্যে 10 প্যাডিং প্যাডিং অর্জন করেছি।


1
এটি সমাধান যা আমি ব্যবহার করেছি কারণ এটি সাবক্লাসিংয়ের প্রয়োজন হয় না। আপনার বোতামটির ব্যাকগ্রাউন্ড থাকলে কাজ করবে না তবে এটি আইওএস 7 এর ক্ষেত্রে সাধারণত সমস্যা নয়
জোসে ম্যানুয়েল সানচেজ

আপনি যদি বোতামের সামগ্রীটি ইতিবাচক মান (ধনাত্মক মান> = শিরোনাম ইনসেট) সেট করেন তবে এটি ব্যাকগ্রাউন্ড চিত্রের সাথে কাজ করবে।
বেন ফ্লিন 17

9

জন্য সুইফট 3 উপর ভিত্তি করে pegpeg এর উত্তর:

extension UIButton {

    override open var intrinsicContentSize: CGSize {

        let intrinsicContentSize = super.intrinsicContentSize

        let adjustedWidth = intrinsicContentSize.width + titleEdgeInsets.left + titleEdgeInsets.right
        let adjustedHeight = intrinsicContentSize.height + titleEdgeInsets.top + titleEdgeInsets.bottom

        return CGSize(width: adjustedWidth, height: adjustedHeight)

    }

}

হ্যালো. আমি ইন্টারফেস বিল্ডারে কাস্টম এক্সটেনশন বোতামটি ব্যবহার করতে চাই। plz সহায়তা
কেমডো

6

উপরের সমস্তগুলি আইওএস 9+ এর জন্য কাজ করে নি , আমি যা করেছি তা হ'ল:

  • প্রস্থের সীমাবদ্ধতা যুক্ত করুন (বাটনটিতে কোনও পাঠ্য না থাকলে ন্যূনতম প্রস্থের জন্য text পাঠ্য সরবরাহ করা থাকলে বোতামটি স্বয়ংক্রিয়ভাবে স্কেল হবে)
  • গ্রেটার থান বা সমান এর সাথে সম্পর্ক স্থাপন করুন

এখানে চিত্র বর্ণনা লিখুন

বোতামটির চারপাশে একটি সীমানা যুক্ত করতে কেবল এই পদ্ধতিটি ব্যবহার করুন:

button.contentEdgeInsets = UIEdgeInsetsMake(0,20,0,20);

কেন না? এটি স্বয়ংক্রিয়ভাবে সামগ্রীগুলির সাথে স্কেল করে, আপনাকে কেবল সর্বনিম্ন প্রস্থ নির্ধারণ করতে হবে (যা প্রদর্শিত পাঠ্যের চেয়ে ছোট হতে পারে)
অর্টিম

কারণ আপনি ন্যূনতম প্রস্থ নির্ধারণ করেন। অটোলেআউট সম্পর্কে সম্পূর্ণ ধারণাটি কোনও স্পষ্ট (ন্যূনতম) প্রস্থ নির্ধারণ না করেই এটি সম্পন্ন করে।
জোরিস ম্যানস

এটি প্রস্থ সম্পর্কে নয়, আপনি যদি পছন্দ করেন তবে আপনি প্রস্থটি 1 এ সেট করতে পারেন তবে অটোলেআউটটি জানতে হবে যে প্রস্থটি সমান বা আরও বেশি হতে পারে । আমি আমার উত্তর আপডেট করেছি
Oritm

আপনার মোটেও প্রস্থের সীমাবদ্ধতার দরকার নেই, কনটেন্ট এডজিনসেটটি কী, অটো লেআউটটি তার পরে অভ্যন্তরীণ সামগ্রী আকারের জন্য এটি ব্যবহার করে।
ক্রিস কনভারের

5

আমি আমার ইউআইবাটন আইকন এবং লেবেলের মধ্যে একটি 5pt স্পেস যুক্ত করতে চেয়েছিলাম। এইভাবেই আমি এটি অর্জন করেছি:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeCustom];
// more button config etc
infoButton.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 5);
infoButton.titleEdgeInsets = UIEdgeInsetsMake(0, 5, 0, -5);

যেভাবে বিষয়বস্তুএডজিনসেটস, শিরোনামএডজিনসেটস এবং ইমেজএইনসেটগুলি একে অপরের সাথে সম্পর্কিত তার প্রতিটি ইনসেট থেকে কিছুটা নেওয়া এবং নেওয়া দরকার। সুতরাং আপনি যদি শিরোনামের বামে কিছু ইনসেট যুক্ত করেন তবে আপনাকে ডানদিকে নেতিবাচক ইনসেট যুক্ত করতে হবে এবং সামগ্রী ডানদিকে আরও কিছু স্থান সরবরাহ করতে হবে (ধনাত্মক ইনসেটের মাধ্যমে)।

শিরোনামের শিফটটি পোকামাকড়ের সাথে মিলানোর জন্য একটি সঠিক সামগ্রী ইনসেট যুক্ত করে আমার পাঠ্যটি বোতামের সীমানার বাইরে যায় না।


3

বিকল্পটি ইন্টারফেস বিল্ডারেও উপলব্ধ। ইনসেটটি দেখুন। আমি বাম এবং ডানে 3 এ সেট করেছি a

ইন্টারফেস নির্মাতা স্ক্রিনশট


1
হ্যাঁ, এই উত্তরটির ব্যাখ্যা হিসাবে , এটি কাজ করার কারণটি আপনি এজ: সামগ্রীটি এজ: শিরোনাম বা প্রান্ত: চিত্রের পরিবর্তে এখানে সামঞ্জস্য করছেন ।
স্মাইলিবার্গ

1

আমি যে সমাধানটি ব্যবহার করি তা হ'ল বোতামটিতে প্রস্থের সীমাবদ্ধতা। তারপরে কোথাও প্রারম্ভিকতার মধ্যে আপনার পাঠ্য সেট হওয়ার পরে প্রস্থের সীমাবদ্ধতার মতো আপডেট করুন:

self.buttonWidthConstraint.constant = self.shareButton.intrinsicContentSize.width + 8;

যেখানে 8 আপনার ইনসেটটি যাই হোক না কেন।


বাটনউইথকন্ট্রেন্ট কী?
অ্যালেক্সি গোলিকভ

@ আলেক্সিগোলিকভ একটি এনএসলাইআউটকন্ট্রেন্ট - ডেভেলপার.এপ্লে
লাইব্রেরি /

1
এটি কোনও দুর্দান্ত সমাধান নয়, কারণ যদি বোতামটির অভ্যন্তরীণ সামগ্রীর আকার পরিবর্তন হয় তবে আপনার বাধাটি নিজেই constantনতুন মানকে আপডেট করতে হবে ... এবং কখন বাটনটির অভ্যন্তরীণ সামগ্রীর আকার পরিবর্তন করা শক্ত তা জানতে হবে বোতামটি সাবক্লাসিং ছাড়াই।
স্মাইলিবার্গ

Ayup। আমি এই পদ্ধতিটি আর ব্যবহার করি না। অবাক করে দিয়েছিলেন এটি একটি নিচে ভোটের যোগ্য তবে ¯_ (ツ) _ / ¯
বব স্প্রিন

setNeedsUpdateConstraintsবোতামের শিরোনাম বা চিত্র আপডেট করার পরে একটি কল "ম্যানুয়ালি" করা যেতে পারে। তারপরে আপনি সেখান থেকে ধ্রুবকের ওভাররাইড updateConstraintsএবং পুনরায় গণনা করতে পারেন buttonWidthConstraint। এটি অগত্যা সেরা পদ্ধতির নয় তবে এটি আমার পক্ষে যথেষ্ট ভাল কাজ করে। ওয়াইএমএমভি;)
অলিভিয়ার

1

সাইজ টোফিট () কল করে কনটেন্টএডইজনসেট কার্যকর হয়েছে কিনা তা নিশ্চিত করে

extension UIButton {

   open override func draw(_ rect: CGRect) { 
       self.contentEdgeInsets = UIEdgeInsets(top: 10, left: 40, bottom: 10, right: 40)
       self.sizeToFit()
   }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.