ios - রঙিন রঙিন UIButton চিত্র




iphone ios7 (10)

আমি লক্ষ্য করেছি যে যখন আমি একটি সাদা বা কালো UIImage একটি UISegmentedControl এটি স্বয়ংক্রিয়ভাবে সেগমেন্টযুক্ত নিয়ন্ত্রণের রঙের সাথে মেলে এমন রঙের মাস্ক। আমি এটা সত্যিই শান্ত ছিল, এবং আমি অন্য কোথাও এই কাজ করতে পারে যদি বিস্মিত ছিল। উদাহরণস্বরূপ, আমার একটি গোষ্ঠী রয়েছে যা একটি অভিন্ন আকৃতি তবে বিভিন্ন রঙ রয়েছে। প্রতিটি বোতামের জন্য একটি PNG তৈরি করার পরিবর্তে, আমি কীভাবে এই রঙের মাস্কিংটি ব্যবহার করতে পারি সেগুলির জন্য একই চিত্রটি ব্যবহার করার জন্য কিন্তু তারপর একটি রঙিন রং বা তাদের আসল রঙ পরিবর্তন করার জন্য কিছু সেট করতে পারি?


Ric ইতিমধ্যে তার post উল্লিখিত হিসাবে আপনি কোডে রেন্ডার মোড সেট করতে পারেন, আপনি ইমেজ ক্যাটালগ এ এটি সরাসরি করতে পারেন, নীচের সংযুক্ত ইমেজ দেখুন। শুধু Template Image Render As সেট করুন

Caveat আমি iOS 7 এবং এই পদ্ধতির সঙ্গে সমস্যা হয়েছে। তাই আপনি যদি iOS 7 ব্যবহার করেন তবে আপনি এখানে কোড হিসাবে এটিও করতে পারেন, নিশ্চিত হোন, যেমন post বর্ণিত।


Xamarin.iOS (সি #) জন্য:

        UIButton messagesButton = new UIButton(UIButtonType.Custom);
        UIImage icon = UIImage.FromBundle("Images/icon.png");
        messagesButton.SetImage(icon.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), UIControlState.Normal);
        messagesButton.TintColor = UIColor.White;
        messagesButton.Frame = new RectangleF(0, 0, 25, 25);

আপনার চেষ্টা করা উচিত্

ফ্রেম সেট করার পরে

NSArray *arr10 =[NSArray arrayWithObjects:btn1,btn2,nil];
for(UIButton *btn10 in arr10)
{
CAGradientLayer *btnGradient2 = [CAGradientLayer layer];
btnGradient2.frame = btn10.bounds;

btnGradient2.colors = [NSArray arrayWithObjects:
                       (id)[[UIColor colorWithRed:151.0/255.0f green:206.0/255.5 blue:99.0/255.0 alpha:1] CGColor],
                       (id)[[UIColor colorWithRed:126.0/255.0f green:192.0/255.5 blue:65.0/255.0 alpha:1]CGColor],
                       nil];
[btn10.layer insertSublayer:btnGradient2 atIndex:0];

}

আপনি যদি নিজের ইমেজটি ম্যানুয়ালিভাবে মাস্ক করতে চান তবে এখানে রেটটি স্ক্রীনের সাথে কাজ করা কোডটি আপডেট করা হয়েছে

- (UIImage *)maskWithColor:(UIColor *)color
{
    CGImageRef maskImage = self.CGImage;
    CGFloat width = self.size.width * self.scale;
    CGFloat height = self.size.height * self.scale;
    CGRect bounds = CGRectMake(0,0,width,height);

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef bitmapContext = CGBitmapContextCreate(NULL, width, height, 8, 0, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedLast);
    CGContextClipToMask(bitmapContext, bounds, maskImage);
    CGContextSetFillColorWithColor(bitmapContext, color.CGColor);
    CGContextFillRect(bitmapContext, bounds);

    CGImageRef cImage = CGBitmapContextCreateImage(bitmapContext);
    UIImage *coloredImage = [UIImage imageWithCGImage:cImage scale:self.scale orientation:self.imageOrientation];

    CGContextRelease(bitmapContext);
    CGColorSpaceRelease(colorSpace);
    CGImageRelease(cImage);

    return coloredImage;
}

উপরের কোনটি আমার জন্য কাজ করেনি, কারণ টিন্ট ক্লিক করার পরে সাফ করা হয়েছিল। আমি ব্যবহার ছিল

button.setImageTintColor(Palette.darkGray(), for: UIControlState())

কাস্টম টাইপ সহ সুইফ্ট 4:

let button = UIButton(frame: aRectHere)
    let buttonImage = UIImage(named: "imageName")
    button.setImage(buttonImage?.withRenderingMode(.alwaysTemplate), for: .normal)
    button.tintColor = .white

যদি আপনার ব্যাকগ্রাউন্ড চিত্রের সাথে একটি কাস্টম বোতাম থাকে। আপনি আপনার বোতামের রঙিন রঙ সেট করতে পারেন এবং নীচের চিত্রটিকে ওভাররাইড করতে পারেন।

সম্পদ আপনি tint রঙ সেট করতে চান বাটন পটভূমি নির্বাচন করুন।

ইমেজ সেট এর বৈশিষ্ট্য পরিদর্শক মধ্যে মান "টেমপ্লেট চিত্র" হিসাবে রেন্ডার

এখন যখনই আপনি button.tintColor = UIColor.red সেট button.tintColor = UIColor.red আপনি বাটনটি লাল দেখাবে।


সুইফ্টে আপনি তাই করতে পারেন:

var exampleImage = UIImage(named: "ExampleImage.png")?.imageWithRenderingMode(.AlwaysTemplate)

তারপর আপনার দৃশ্যে ডিললোড

exampleButtonOutlet.setImage(exampleImage, forState: UIControlState.Normal)

এবং রঙ পরিবর্তন করতে

exampleButtonOutlet.tintColor = UIColor(red: 1, green: 0, blue: 0, alpha: 1) //your color

এক্সকোড 8 সম্পাদনা করুন এখন আপনি আপনার .xcassets এ ইমেজটির রেন্ডারিং মোড এছাড়াও টেমপ্লেট চিত্রতে এবং তারপরে আপনাকে বিশেষভাবে এটি var exampleImage ঘোষণা করতে হবে না। var exampleImage এখন আর নেই


কাস্টম বাটন তাদের নিজ নিজ ইমেজ রং প্রদর্শিত। বোতাম টাইপ স্টোরিবোর্ডে "সিস্টেম" এ সেট করা (অথবা UIButtonTypeSystem এ), বাটনটির চিত্রটিকে ডিফল্ট রঙিন রঙ দিয়ে রেন্ডার করবে।

(iOS9, এক্সকোড 7.3 পরীক্ষা)


সুইফ্ট 3.0

    let image = UIImage(named:"NoConnection")!

 warningButton = UIButton(type: .system)        
    warningButton.setImage(image, for: .normal)
    warningButton.tintColor = UIColor.lightText
    warningButton.frame = CGRect(origin: CGPoint(x:-100,y:0), size: CGSize(width: 59, height: 56))

    self.addSubview(warningButton)




uisegmentedcontrol