ios - কিভাবে একটি UIButton এর ইমেজ আকার সমন্বয়?




objective-c xcode (10)

কিভাবে আমি UIButton ইমেজ আকার সামঞ্জস্য করতে পারেন? আমি এই মত ছবি সেটিং করছি:

[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];

তবে এই ছবিটিকে পূর্ণ বোতামে ভরাট করে, আমি কিভাবে চিত্রটিকে ছোট করব?


Swift সংস্করণ Heres:

myButton.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)

আপনার ছবিটি যদি বড় হয় (এবং আপনি কেবল ছবিটিকে ছোট করতে চান না), প্রথম দুটি উত্তরগুলির সমন্বয়টি দুর্দান্ত কাজ করে।

addButton.imageView?.contentMode = .scaleAspectFit
addButton.imageEdgeInsets = UIEdgeInsetsMake(15.0, 15.0, 15.0, 5.0)

যতক্ষণ না আপনি ইমেজ ইনসেটগুলি সঠিকভাবে পান, contentMode পরিবর্তন না করেই স্কিউড করা হবে।


আপনি এই মত ইন্টিগ্রেশন নির্মাতা থেকে যে করতে পারেন।

আমি এটা সহায়ক মনে হয়।


আমি মনে করি, আপনার চিত্রের আকারটি বাটন আকারের মতো একই, তবে আপনি বাটনটির পটভূমিতে চিত্রটি রেখেছেন:

[myLikesButton setBackgroundImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];

আপনি মস্তিষ্ক ইমেজ এবং বাটন একই আকার আছে। আশা করি আপনি আমার পয়েন্ট বুঝতে।


টিম এর উত্তর সঠিক, তবে আমি অন্য পরামর্শ যোগ করতে চেয়েছিলাম, কারণ আমার ক্ষেত্রে একটি সম্পূর্ণ সমাধান ছিল সম্পূর্ণরূপে।

আমি UIButton ইমেজ UIButton সেট করতে UIButton কারণ আমি বুঝতে পারিনি যে আমি বোতামের UIImageView এ সামগ্রী মোড সেট করতে UIImageView , যা UIEdgeInsets এবং হার্ড-কোডেড মানগুলি সম্পূর্ণভাবে ব্যবহার করার প্রয়োজনকে বাধা দেয়। কেবল বোতামে অন্তর্নিহিত চিত্র দেখুন এবং সামগ্রী মোড সেট করুন:

myButton.imageView.contentMode = UIViewContentModeScaleAspectFit;

দেখুন UIButton কন্টেন্ট মোড সেটিংস শুনতে না?

সুইফ্ট 3

myButton.imageView?.contentMode = .scaleAspectFit

যদি আপনি সঠিকভাবে বুঝতে চান যে আপনি যা করার চেষ্টা করছেন, তবে আপনাকে বাটন চিত্র প্রান্তের অন্তর দিয়ে খেলতে হবে। কিছুটা এইরকম:

myLikesButton.imageEdgeInsets = UIEdgeInsetsMake(top, left, bottom, right);

সুইফ্ট 3:

button.setImage(UIImage(named: "checkmark_white"), for: .normal)
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10)

UIEdgeInsetsMake(top, left, bottom, right) সহ আইকনের আকার পরিবর্তন করার সময় UIEdgeInsetsMake(top, left, bottom, right) মনে রাখবেন বাটন মাত্রাগুলি রাখুন এবং UIEdgeInsets এর ক্ষমতা নেতিবাচক মানগুলির সাথে কাজ করার জন্য তৈরি করুন যেন তারা ইতিবাচক।

উদাহরণ: উচ্চতা 100 এবং দিক 1: 1 সহ দুটি বোতাম।

left.imageEdgeInsets = UIEdgeInsetsMake(40, 0, 40, 0)
right.imageEdgeInsets = UIEdgeInsetsMake(40, 0, 40, 0)

left.imageEdgeInsets = UIEdgeInsetsMake(40, 0, 40, 0)
right.imageEdgeInsets = UIEdgeInsetsMake(45, 0, 45, 0)

left.imageEdgeInsets = UIEdgeInsetsMake(40, 0, 40, 0)
right.imageEdgeInsets = UIEdgeInsetsMake(60, 0, 60, 0)

উদাহরণ 1 এবং 3 ABS (100 - (40 + 40)) = ABS (100 - (60 + 60)) থেকে অভিন্ন।


সুইফ্ট 4

আপনি এই নির্দিষ্ট ক্রম কোড, এই দুই লাইন ব্যবহার করতে হবে। আপনি প্রয়োজন প্রান্ত insets উপরের এবং নীচে মান পরিবর্তন করা হয়।

addButton.imageView?.contentMode = .scaleAspectFit
addButton.imageEdgeInsets = UIEdgeInsetsMake(10.0, 0.0, 10.0, 0.0)

টিম সি এর উত্তর দিয়ে , আমি সুইফ্ট ব্যবহার করে UIButton একটি এক্সটেনশান তৈরি করতে সক্ষম UIButton যা আপনাকে একটি অতিরিক্ত frame প্যারামিটার সহ .setImage() ফাংশন ব্যবহার করে চিত্র ফ্রেম নির্দিষ্ট করতে দেয়।

extension UIButton{

    func setImage(image: UIImage?, inFrame frame: CGRect?, forState state: UIControlState){
        self.setImage(image, forState: state)

        if let frame = frame{
            self.imageEdgeInsets = UIEdgeInsets(
                top: frame.minY - self.frame.minY,
                left: frame.minX - self.frame.minX,
                bottom: self.frame.maxY - frame.maxY,
                right: self.frame.maxX - frame.maxX
            )
        }
    }

}

এটি ব্যবহার করে, যদি আপনি UIButton CGRectMake(0, 0, 64, 64) myImage ফ্রেম সেট করতে চান এবং CGRectMake(8, 8, 48, 48) ফ্রেমের সাথে এটির চিত্রটি আমার myImage সেট করুন, আপনি ব্যবহার

let button: UIButton = UIButton(frame: CGRectMake(0, 0, 64, 64))
button.setImage(
    myImage,
    inFrame: CGRectMake(8, 8, 48, 48),
    forState: UIControlState.Normal
)




uibutton