আমি কি ইউআইএসিটিভিটিআইডিসিটারের আকার পরিবর্তন করতে পারি?


95

বরাদ্দকালে আমি এটিকে যে আকার দেই না কেন এটি কেবল নির্দিষ্ট আকার দেখায়। এটি কি বাড়ানো সম্ভব?

কোড:

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:
                     CGRectMake(142.00, 212.00, 80.0, 80.0)];
[[self view] addSubview:activityIndicator];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                                      UIViewAutoresizingFlexibleRightMargin |
                                      UIViewAutoresizingFlexibleTopMargin |
                                      UIViewAutoresizingFlexibleBottomMargin);
activityIndicator.hidesWhenStopped = YES;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;

উত্তর:


51

আকার স্টাইল দ্বারা স্থির করা হয়। এটি একটি স্ট্যান্ডার্ডাইজড ইন্টারফেস উপাদান যাতে API এটির সাথে গলগল করতে পছন্দ করে না।

তবে আপনি সম্ভবত এটিতে কোনও স্কেলিং রূপান্তর করতে পারেন। তবে কীভাবে এটি দৃশ্যত এটি প্রভাবিত করবে তা নিশ্চিত নয়।

কেবলমাত্র একটি ইউআই ডিজাইনের দৃষ্টিকোণ থেকে, এই সাধারণ মানক উপাদানগুলিকে একা রেখে দেওয়া ভাল। ব্যবহারকারীকে শেখানো হয়েছে যে নির্দিষ্ট উপাদান একটি নির্দিষ্ট আকারে উপস্থিত হয় এবং সেগুলি নির্দিষ্ট জিনিস বোঝায়। মানক উপস্থিতি পরিবর্তন করা ইন্টারফেস ব্যাকরণকে পরিবর্তিত করে এবং ব্যবহারকারীকে বিভ্রান্ত করে।


14
এটি নির্দিষ্ট প্রসঙ্গে দুর্দান্ত। যাইহোক, যদি এটি একটি স্প্ল্যাশ স্ক্রিনে থাকে এবং আপনি যা দেখেন সমস্তই লোগো এবং সম্ভবত পর্দার মাঝখানে এই টেনেসি ছোট স্পিনারটি কিছুটা নির্বোধ দেখাচ্ছে looks আমি বিশ্বাস করতে পারি না অ্যাপল ভাবেন এক-আকারের-ফিট-সবগুলি এমনকি ইউআই উপাদানগুলির মধ্যে একটি ধারণা।
বেন লেগিগিরো

6
@ বেঙ্গলবেগিয়েরো আপনি কি কথা বলছেন না UIActivityIndicatorViewStyleWhiteLarge, বরং তার পরিবর্তে ছোট আকারের কথা বলছেন ? কারণ আমি মনে করি যে Largeখালি স্ক্রিনেও এই সংস্করণটির একটি দুর্দান্ত আকার রয়েছে।
অর্থ-বিষয়গুলি

4
.whiteLargeএটা কি পারে! ধন্যবাদ! আমিও সেট করেছিলাম UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))এবং activityIndicator.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.38)। 6 + / 7 + স্ক্রিনে ডিফল্টটি কেবল খুব ক্ষুদ্র
রকহ্যামার

4
আকার বাড়াতে যদি আপনি একটি স্কেলিং ট্রান্সফর্ম করেন তবে এটি অস্পষ্ট দেখাবে।
গ্যান্ডালফ 458

164

নিম্নলিখিত 15px প্রশস্ত একটি ক্রিয়াকলাপ সূচক তৈরি করবে:

#import <QuartzCore/QuartzCore.h>

...

UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
activityIndicator.transform = CGAffineTransformMakeScale(0.75, 0.75);
[self addSubview:activityIndicator];

আমি যখন টেকজেনের উত্তরের অনুভূতি বুঝতে পেরেছি তখনও আমি মনে করি না যে কোনও ইউআইএসিটিভিটি ইন্ডিকেটরের আকারকে তুলনামূলকভাবে সামান্য পরিমাণে সামঞ্জস্য করা আসলেই অ্যাপলের মানক ইন্টারফেস আইডিয়ামগুলির লঙ্ঘন - কোনও ক্রিয়াকলাপের সূচকটি 20px বা 15px ব্যবহারকারীর ব্যাখ্যা বদলে দেবে না কি হচ্ছে এর।


4
ওয়েবভিউয়ের মাঝখানে একটি থাকার সাথে আইপ্যাডে ক্রিয়াকলাপের সূচকগুলি খুব ছোট ...
হক্কুক

4
এটি পিক্সেলগুলি স্কেল করে বলে মনে হচ্ছে, তাই দুর্ভাগ্যক্রমে বৃহত পরিমাণে গ্রহণযোগ্য নয়।
প্রিভিট

69

সুইফট 3.0 এবং সুইফট 4.0

self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)

4
ঠিক আমার যা প্রয়োজন ছিল। এটি শীর্ষ উত্তর হওয়া উচিত।
nocdib

আমি সাধারণ বিষয়গুলির জন্য এক লাইনের সমাধানগুলি পছন্দ করি! এখন একমাত্র বিষয়টি হ'ল এটি কীভাবে অ্যান্টিএল অ্যান্টি করা যায়। দ্বিগুণ আকারে এটি অ্যাপল টিভিতে কিছুটা রুক্ষ দেখায়
মিশেল ডাল'আগটা

@ মিশেলডাল'আগটা এখনও আইওএসে ভাল মানের গ্রাফিক্স অগ্রগতি বারের জন্য কোনও নেটিভ সমাধান নেই যদি আপনি এটির থেকে ভাল পছন্দটি তৈরি করতে চান তবে আমি অ্যাপ্লিকেশন আকার এবং অ্যাপ্লিকেশন কর্মক্ষেত্রে নেটিভ বিকোজেজ ব্যবহার করার পরামর্শ দিচ্ছি
হর্ষিল কোটেচা

@ হর্ষিলকোটেচা আসলে আমি পরে জানতে পেরেছি যে আইবিতে (কমপক্ষে টিভিওএসের জন্য) ক্রিয়াকলাপের গিয়ারের জন্য একটি স্টাইল রয়েছে যার নাম "লার্জ হোয়াইট"। এটির একটি স্বাভাবিকের দ্বিগুণ অনুপাত রয়েছে, যা আমি লক্ষ্য করেছিলাম imed নিয়ামকগুলি খুব কম, একটি একক ঘরের জন্য ভাল।
মিশেল ডাল'আগটা

45

ইউআইএসিএটিভিটি ইন্ডিকেটরকে পুনরায় আকার দেওয়া সম্ভব।

CGAffineTransform transform = CGAffineTransformMakeScale(1.5f, 1.5f);
activityIndicator.transform = transform;

আসল আকার 1.0f। এখন আপনি সেই অনুযায়ী আকার বৃদ্ধি এবং হ্রাস করুন।


4
let transform = CGAffineTransformMakeScale(1.5, 1.5) activityIndicator.transform = transform
রোহিত তহবিল

11

সুইফট 3

 var activityIndicator = UIActivityIndicatorView()
    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
    activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
    let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.5, y: 1.5)
    activityIndicator.transform = transform
    activityIndicator.center = self.view.center
    activityIndicator.startAnimating()
    self.view.addSubview(activityIndicator)

3

এখানে একটি এক্সটেনশান যা 0 টি স্কেলিং (বা আপনি যে মানটি নিষিদ্ধ করতে চান) প্রতিরোধ করতে সুইফট 3.0 এবং চেকগুলিতে কাজ করবে :

extension UIActivityIndicatorView {
    func scale(factor: CGFloat) {
        guard factor > 0.0 else { return }

        transform = CGAffineTransform(scaleX: factor, y: factor)
    }
}

40 টি পিটিএস (2x) স্কেল করার জন্য এটির মতো কল করুন:

activityIndicatorView.scale(factor: 2.0)

2

এছাড়াও আপনি প্রচুর অন্যান্য দরকারী "সিজিএফাইন ট্রান্সফর্ম" কৌশলগুলি খেলতে পারেন। আরও তথ্যের জন্য দয়া করে অ্যাপল বিকাশকারী গ্রন্থাগার উল্লেখ দেখুন:

http://developer.apple.com/library/mac/# ডকুমেন্টেশন / গ্রাফিক্স ইমেজিং / রেফারেন্স / সিজিএফাইন ট্রান্সফর্ম / রেফারেন্স / রেফারেন্স html

শুভকামনা!


1

whiteLargeস্টাইলটি ব্যবহার করে আপনি সবচেয়ে ভাল করতে পারেন । let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)

আকার বাড়ানো UIActivityIndicatorViewসূচকটির আকারটি যথাযথভাবে পরিবর্তন করে না কারণ আপনি এই ছবিতে দেখতে পাচ্ছেন।ছোট সূচক "বৃহত" সূচক


1

কার্যকলাপIndicator.transform = সিজিএফাইন ট্রান্সফর্ম (স্কেলএক্স: 1.75, y: 1.75);

এটি সূচক আকার পরিবর্তন করার জন্য আমাকে কাজ করেছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.