কীভাবে ইউআইপিকারকারভিউ উচ্চতা পরিবর্তন করবেন


116

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


1
অতিরিক্ত উত্তর একই ধরণের প্রশ্নে পাওয়া যাবে: আইফোনটিতে পিকর ভিউ সঙ্কুচিত করবেন কীভাবে?
ব্র্যাড লারসন

উত্তর:


54

এটি স্পষ্ট বলে মনে হয় যে অ্যাপল বিশেষত ডিফল্ট উচ্চতার সাথে মাককে আমন্ত্রণ জানায় না UIPickerView, তবে আমি পেয়েছি যে আপনি সম্পূর্ণ নিয়ন্ত্রণ গ্রহণের মাধ্যমে এবং তৈরির সময় একটি পছন্দসই ফ্রেমের আকার পাস করে দৃশ্যের উচ্চতায় পরিবর্তন অর্জন করতে পারেন , যেমন:

smallerPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)];

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


2
এটি আপনার জন্য কাজ করে? সমস্ত ইনস্টল করা ইউআইপিকারভিউগুলি 215 এর উচ্চতায় লক হয়ে গেছে বলে মনে হচ্ছে ...
অ্যান্ডি বুরাসা

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

এমন কোন তৃতীয় পক্ষের নিয়ন্ত্রণ আছে যা আকার পরিবর্তন করতে দেয়?
সিফিশার

1
এটি কাজ করে। 4.3। আমি প্রথম উপস্থিতির আগে ফ্রেম এবং সেটফ্রেম দিয়ে দীক্ষা করি।
griotspeak

2
আমি কিছুক্ষণ এই জন্য আটকে ছিলাম। এটি গুরুত্বপূর্ণ যে আপনি প্রথম উপস্থিতির আগে ফ্রেম বা সেটফ্রেম দিয়ে দীক্ষা করা উচিত বা আপনি ভিজ্যুয়াল গ্লিটস পাবেন IM
w.donahue

46

উপরোক্ত পদ্ধতির কোনওটি আইওএস ৪.০ এ কাজ করে না

পিকরভিউয়ের উচ্চতা আর আকারের নয়। এখানে একটি বার্তা রয়েছে যা আপনি যদি 4.0 এর মধ্যে কোনও পিকারের ফ্রেম পরিবর্তন করার চেষ্টা করেন তবে কনসোলে ফেলে দেওয়া হবে:

-[UIPickerView setFrame:]: invalid height value 66.0 pinned to 162.0 

আমি একটি ছোট পিকারের প্রভাব পেতে বেশ মৌলিক কিছু করতে পেরেছি যা উভয় ওএস 3.Xxx এবং OS 4.0 এ কাজ করে। এসডিকে যে আকারের হওয়া উচিত তার সিদ্ধান্ত নিতে আমি চয়নকারীকে রেখে দিয়েছিলাম এবং এর পরিবর্তে আমার পটভূমির চিত্রটিতে একটি কাট-থ্রো স্বচ্ছ উইন্ডো তৈরি করেছি যার মাধ্যমে পিকারটি দৃশ্যমান হয়। তারপরে কেবল পিকারটিকে পিছনে রাখুন (জেড অর্ডার ওয়াইস) আমার ব্যাকগ্রাউন্ড ইউআইআইমেজভিউ যাতে পিকারের কেবলমাত্র একটি অংশ দৃশ্যমান হয় যা আমার পটভূমিতে স্বচ্ছ উইন্ডো দ্বারা নির্ধারিত হয়।


44

এর জন্য কেবল তিনটি বৈধ উচ্চতা রয়েছে UIPickerView (162.0, 180.0 and 216.0)

আপনি আপনার সুবিধার্থে চয়নকারীকে সঠিকভাবে ফিট করার জন্য CGAffineTransformMakeTranslationএবং CGAffineTransformMakeScaleফাংশনগুলি ব্যবহার করতে পারেন ।

উদাহরণ:

CGAffineTransform t0 = CGAffineTransformMakeTranslation (0, pickerview.bounds.size.height/2);
CGAffineTransform s0 = CGAffineTransformMakeScale       (1.0, 0.5);
CGAffineTransform t1 = CGAffineTransformMakeTranslation (0, -pickerview.bounds.size.height/2);
pickerview.transform = CGAffineTransformConcat          (t0, CGAffineTransformConcat(s0, t1));

উপরের কোডটি পিকার ভিউয়ের উচ্চতাটিকে অর্ধেক করে পরিবর্তন করে একে আবার সঠিক (বাম-এক্স 1, শীর্ষ-y1) অবস্থানে রাখে।


1
দুর্দান্ত উত্তর। পিকের উচ্চতা পরিবর্তনের জন্য আপনাকে কেবল অনুবাদটি ব্যবহার করার দরকার নেই: পিকের ভিউ.টান্সফর্ম = সিজিএফাইন ট্রান্সফর্মমেকস্কেল (1.0, 0.5);
বোর্হ্জ

2
ধন্যবাদ। এটি সত্য বলে মনে হচ্ছে তবে বৈধ উচ্চতায় কোনও অ্যাপল ডকুমেন্টেশন আছে কি?
এরিক চেন

40

চেষ্টা করুন:

pickerview.transform = CGAffineTransformMakeScale(.5, 0.5);

2
আমি জানি আমি এখানে পার্টিতে দেরি করেছি - এবং সম্ভবত এটি করার জন্য আরও ভাল পদ্ধতি রয়েছে যা এখন বিদ্যমান তবে এটি আমার পক্ষে কার্যকর হয়েছিল।
হ্যানি

দুর্দান্ত কাজ! সুইফট (প্রয়োজন iOS 10) জন্য এটি দেওয়া হল: statePicker.transform = CGAffineTransform (scaleX: 0.8, ওয়াই: 0.8)
মৈশক

25

আইওএসে 4.2 এবং 4.3 নিম্নলিখিত কাজ করে:

UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.frame = CGRectMake(0, 0, 320, 180);
[self addSubview:datePicker];

নিম্নলিখিতগুলি কাজ করে না:

UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 180)];
[self addSubview:datePicker];

আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যা অ্যাপ স্টোরের সাথে 3 লাইন তারিখ চয়নকারী রয়েছে। আমি ভেবেছিলাম দৈর্ঘ্যের পরিবর্তনটি প্রতিরোধ করা যেতে পারে কারণ আপনি তারিখ বাছাইকারীর সীমানার নীচে পাঠ্যটি দেখেন তবে এটি সাধারণ 216 উচ্চতার তারিখ চয়নকারীটির ক্ষেত্রেও ঘটে।

বাগটি কোনটি? তোমার ধারণা আমারটার মতই ভালো।

এছাড়াও 3 বৈধ উচ্চতা হয় UIDatePicker(এবং UIPickerView) 162.0, 180,0, এবং 216,0। আপনি যদি UIPickerViewঅন্য কোনওটির জন্য উচ্চতা নির্ধারণ করেন তবে কোনও iOS ডিভাইসে ডিবাগ করার সময় কনসোলে নিম্নলিখিতগুলি দেখতে পাবেন।

2011-09-14 10:06:56.180 DebugHarness[1717:707] -[UIPickerView setFrame:]: invalid height value 300.0 pinned to 216.0

14

আইওএস 9 হিসাবে, আপনি অবাধে UIPickerViewএর প্রস্থ এবং উচ্চতা পরিবর্তন করতে পারেন । উপরে উল্লিখিত ট্রান্সফর্ম হ্যাকগুলি ব্যবহার করার দরকার নেই।


কীভাবে বর্ধিত মাপের ইউআইপিকারকার ভিউতে ইনপুটঅ্যাকসেসরিভিউ যুক্ত করা যায় তা নির্ধারণ করা দরকার।
ডগকফি

মন ভাগাভাগি করে কিভাবে?
ইনমানল

10

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


7

সুবিধাদি:

  1. এর UIPickerViewমতো আচরণের সেটফ্রেম তৈরি করে
  2. আপনার মধ্যে কোনও রূপান্তর কোড নেই UIViewController
  3. viewWillLayoutSubviewsপুনরুদ্ধার / অবস্থানের মধ্যে কাজ করেUIPickerView
  4. আইপ্যাড ছাড়া কাজ করে UIPopover
  5. সুপারক্লাস সর্বদা একটি বৈধ উচ্চতা লাভ করে
  6. আইওএস 5 নিয়ে কাজ করে

অসুবিধা:

  1. আপনাকে সাবক্লাসের প্রয়োজন UIPickerView
  2. pickerView viewForRowসাবভিউগুলির জন্য রূপান্তরটি পূর্বাবস্থায় ফেরানোর জন্য ব্যবহারের প্রয়োজন
  3. ইউআইএনিমেশনগুলি কাজ নাও করতে পারে

সমাধান:

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

#define FIXED_PICKER_HEIGHT 216.0f
- (void) setFrame:(CGRect)frame
{
    CGFloat targetHeight = frame.size.height;
    CGFloat scaleFactor = targetHeight / FIXED_PICKER_HEIGHT;
    frame.size.height = FIXED_PICKER_HEIGHT;//fake normal conditions for super
    self.transform = CGAffineTransformIdentity;//fake normal conditions for super
    [super setFrame:frame];
    frame.size.height = targetHeight;
    CGFloat dX=self.bounds.size.width/2, dY=self.bounds.size.height/2;
    self.transform = CGAffineTransformTranslate(CGAffineTransformScale(CGAffineTransformMakeTranslation(-dX, -dY), 1, scaleFactor), dX, dY);
}

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    //Your code goes here

    CGFloat inverseScaleFactor = FIXED_PICKER_HEIGHT/self.frame.size.height;
    CGAffineTransform scale = CGAffineTransformMakeScale(1, inverseScaleFactor);
    view.transform = scale;
    return view;
}

7

পিকার ভিউয়ের দৃশ্যমান উচ্চতা পরিবর্তন করার একটি সহজ উপায় হ'ল পয়েন্টারটিকে ইউআইভিউতে এম্বেড করা, পিতামাতার দৃশ্যের উচ্চতাটি আপনি যে পিকারটি দেখতে চান তার উচ্চতায় সামঞ্জস্য করুন, তারপরে প্যারেন্ট ইউআইভিউতে ইন্টারফেস বিল্ডারে "ক্লিপ সাবভিউ" সক্ষম করুন অথবা view.clipsToBounds = trueকোডে সেট করুন ।

আইবিতে ক্লিপ সাবভিউ


আপনি কি নিশ্চিত করতে পারেন যে এটি আসলে কাজ করে? এক্সকোডে দেখে মনে হচ্ছে এটি ডিভাইসে চলছে এটি সেই ইউভিউয়ের উপরে পিকরভিউ দেখাচ্ছে
nhenrique

1
এটি @ নেহেরিক কাজ করে তবে আপনাকে অবশ্যই ভুলে যাবেন না Clip Subviews। এছাড়াও প্রয়োজনীয় আকারটি UIPickerViewলম্বা হতে হবে - এবং আপনার UIPickerViewপিতামাতার অভ্যন্তরে দৃশ্যমান হওয়ার জন্য আপনার কেন্দ্রটি লক্ষ্য করতে হবেUIView
new2ios

ভাল ধারণা, আইওএস 7.1 এ এটিই আমার জন্য সমাধান ছিল।
ডগলাস নাসিফ রোমা জুনিয়র

এটি কাজ করছে না, @ নিউ 2 আইওএস, আপনি কি এটি নিশ্চিত করতে পারবেন যে এটি iOS8> এ কাজ করছে? আমি একই জিনিস প্রোগ্রামগতভাবে চেষ্টা করার চেষ্টা করছি।
হেমাঙ্গ

দুঃখিত, @ হাগিল, তবে আমি সেই ধারণাটি ত্যাগ করেছি - আমি নিশ্চিত করতে পারছি না। আমি স্টোরিবোর্ড ব্যবহার করি ( UIPickerViewকোড থেকে তৈরি হয়নি )।
new2ios

5

আমি উপরের কোনও উপদেশ অনুসরণ করতে সক্ষম হইনি।

আমি একাধিক টিউটোরিয়াল দেখেছি এবং এটিকে সবচেয়ে উপকারী বলে মনে করেছি:

"অ্যাপ্লিকেশনটিতে কাজ করা" ভিউডিডলড "পদ্ধতির অভ্যন্তরে নতুন উচ্চতা সেট করতে আমি নীচের কোডটি যুক্ত করেছি।

UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)]; 
[self.view addSubview:picker];
picker.delegate = self;
picker.dataSource = self;

আশা করি এটি সহায়ক ছিল!


4

এটি আইওএস 9 এ অনেকটাই পরিবর্তিত হয়েছে (আইওএস 8 এ এটি আমরা এখানে যা দেখছি তার সাথে অনেকটা মিল)। আপনি যদি কেবলমাত্র আইওএস 9 কে টার্গেট করতে সক্ষম হন তবে UIPickerViewতার ফ্রেম সেট করে আপনি নিজের মতো করে আকার পরিবর্তন করুন । ভাল!

এটি আইওএস 9 রিলিজ নোট থেকে এসেছে

ইউআইপিকারভিউ এবং ইউআইডিটপিকার এখন পুনরায় আকার পরিবর্তনযোগ্য এবং অভিযোজিত — পূর্বে, আপনি এইগুলি পুনরায় আকার দেওয়ার চেষ্টা করলেও এই মতামতগুলি একটি ডিফল্ট আকার প্রয়োগ করে। এই মতামতগুলি এখন আইফোনে ডিভাইসের প্রস্থের পরিবর্তে সমস্ত ডিভাইসে 320 পয়েন্টের প্রস্থে ডিফল্ট হয়।

ডিফল্ট আকারের পুরানো প্রয়োগের উপর নির্ভর করে এমন ইন্টারফেসগুলি আইওএস 9 এর জন্য সংকলিত হওয়ার সময় সম্ভবত ভুল দেখায় Any


2

আমি আইওএস 7, এক্সকোড 5 এর সাথে কাজ করছি date আমি ডেট পিকারের উচ্চতা পরোক্ষভাবে এটিকে দৃশ্যে আবদ্ধ করে সামঞ্জস্য করতে সক্ষম হয়েছি। ধারক দৃশ্যের উচ্চতা সামঞ্জস্য করা যেতে পারে।


এটি যতক্ষণ না আমি আইওএস ran এ চালিয়েছি ততক্ষণ এটি কাজ করেছিল যখন আমি এই একই বিল্ডটি আইওএস on-তে চালিত করি তখন পুরো পিকর অন্যান্য অংশের দ্বারা ওভাররাইট করা অংশগুলির জন্য প্রত্যাশা প্রদর্শন করে। যতক্ষণ আপনি কেবলমাত্র => target টার্গেট করেন তবে এটি কার্যকর হতে পারে। এই মতামতের ক্রমবিন্যাস করা হয়েছে যে পিকারটি প্রথমে রেন্ডার করা হয় কার্যকরভাবে বহির্মুখী অংশগুলি আড়াল করে তবে এটি কেবলমাত্র অন্যান্য দর্শন দিয়ে এটির মুখোশ।
ডগ গেরেচট

এটি কীভাবে হয়েছিল সে সম্পর্কে আপনি আরও কিছুটা ব্যাখ্যা করতে পারেন? এটি কি কেবল দর্শন সঙ্কুচিত করার জন্য, বা আপনি বাছাইকারীকে আরও বড় করতে পারেন? বর্তমানে একটি আইওএস iPad আইপ্যাড অ্যাপ্লিকেশন বিকাশ করছে এবং বাছাইকারীকে আরও লম্বা হতে হবে, তবে আমি যত চেষ্টা করি তা বড় করে উঠতে পারি না!
লিজা

2

আইবি বা কোডে একটি ভিউ তৈরি করুন। এই দর্শনটির একটি সংক্ষিপ্তসার হিসাবে আপনার চয়নকারী যুক্ত করুন। দৃশ্যটি পুনরায় আকার দিন। আইবিতে এটি করা সবচেয়ে সহজ। ভিউ থেকে তার তত্ত্বাবধানে এবং চয়নকারী থেকে এই নতুন দর্শনে সীমাবদ্ধতা তৈরি করুন।

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

এটি আইফোন 5 এ 96 পয়েন্টের মতো দেখতে দেখতে এখানে রয়েছে the স্পিলওভার সহ পিকারটি প্রায় 130 পয়েন্ট উচ্চ। বেশ চর্মসার!

আমি এইটিকে বাছাইকারীকে অপ্রয়োজনীয় উচ্চতায় ছড়িয়ে পড়তে বাধা দিতে আমার প্রকল্পে এটি ব্যবহার করছি। এই কৌশলটি এটিকে ছাঁটাই করে এবং আরও শক্ততর ছড়িয়ে পড়ে forces এটি দেখতে কিছুটা আরও কমপ্যাক্ট হওয়ার জন্য চটচটে দেখায়।

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

এখানে স্পিলওভারটি দেখানোর একটি চিত্র রয়েছে।

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

এখানে আইবি বাধাগুলি যুক্ত করেছি।

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


1

এমনকি ভেবেছিল এটির আকার পরিবর্তন হচ্ছে না, ইউআইপিকার যখন পর্দার নীচে অবস্থিত থাকে তখন অন্য কৌশলটি সেই পরিস্থিতিতে সহায়তা করতে পারে।

যে কেউ এটিকে সামান্য নিচের দিকে নিয়ে যাওয়ার চেষ্টা করতে পারে তবে কেন্দ্রীয় সারিটি দৃশ্যমান থাকবে। এটি পিকারের উপরে কিছু স্থান প্রকাশ করতে সহায়তা করবে যেহেতু নীচের সারিগুলি অফস্ক্রিন হবে।

আমি পুনরুক্তি করি যে এটি ইউআইপিকার ভিউ'র উচ্চতা পরিবর্তনের উপায় নয় তবে অন্য সমস্ত প্রচেষ্টা ব্যর্থ হলে আপনি কী করতে পারেন সে সম্পর্কে কিছু ধারণা।


1

ঠিক আছে, আইওএস 4-তে বোকা পিকরভিউয়ের সাথে দীর্ঘ সময় সংগ্রাম করার পরে, আমি আমার নিয়ন্ত্রণটিকে সাধারণ টেবিলের মধ্যে স্থান দেওয়ার সিদ্ধান্ত নিয়েছি: কোডটি এখানে:

ComboBoxView.m = which is actually looks more like pickerview.

//
//  ComboBoxView.m
//  iTrophy
//
//  Created by Gal Blank on 8/18/10.
//

#import "ComboBoxView.h"
#import "AwardsStruct.h"


@implementation ComboBoxView

@synthesize displayedObjects;

#pragma mark -
#pragma mark Initialization

/*
- (id)initWithStyle:(UITableViewStyle)style {
    // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
    if ((self = [super initWithStyle:style])) {
    }
    return self;
}
*/


#pragma mark -
#pragma mark View lifecycle

/*
- (void)viewDidLoad {
    [super viewDidLoad];

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
*/

/*
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
}
*/
/*
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
}
*/
/*
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
}
*/
/*
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    return [[self displayedObjects] count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row];

    UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
        //cell.contentView.frame = CGRectMake(0, 0, 230.0,16);
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 5, 230.0,19)] autorelease];
        VivatAwardsStruct *vType = [displayedObjects objectAtIndex:indexPath.row];
        NSString *section = [vType awardType]; 
        label.tag = 1;
        label.font = [UIFont systemFontOfSize:17.0];
        label.text = section;
        label.textAlignment = UITextAlignmentCenter;
        label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
        label.adjustsFontSizeToFitWidth=YES;
        label.textColor = [UIColor blackColor];
        //label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
        [cell.contentView addSubview:label]; 
        //UIImage *image = nil;
        label.backgroundColor = [UIColor whiteColor];
        //image = [awards awardImage];
        //image = [image imageScaledToSize:CGSizeMake(32.0, 32.0)];

        //[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
        //UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        //cell.accessoryView = imageView;
        //[imageView release];
    }

    return cell;
}


/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/


/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}
*/


/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/


/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/


#pragma mark -
#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic may go here. Create and push another view controller.
    /*
     <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];
     [detailViewController release];
     */
}


#pragma mark -
#pragma mark Memory management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Relinquish ownership any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}


@end

এটির জন্য .h ফাইলটি এখানে:

//
//  ComboBoxView.h
//  iTrophy
//
//  Created by Gal Blank on 8/18/10.
//

#import <UIKit/UIKit.h>


@interface ComboBoxView : UITableViewController {
    NSMutableArray *displayedObjects;
}

@property (nonatomic, retain) NSMutableArray *displayedObjects;


@end

now, in the ViewController where I had Apple UIPickerView I replaced with my own ComboBox view and made it size what ever I wish.

ComboBoxView *mypickerholder = [[ComboBoxView alloc] init]; 
[mypickerholder.view setFrame:CGRectMake(50, 220, 230, 80)];
[mypickerholder setDisplayedObjects:awardTypesArray];

এটাই, এখন একমাত্র জিনিস বাকি থাকে যে কম্বোবক্স ভিউতে সদস্য ভেরিয়েবল তৈরি করা যা বর্তমান সারি নির্বাচনটি ধারণ করবে এবং আমরা যেতে ভাল good

সবাই উপভোগ করুন।


ভিভাট আওয়ার্ডস্ট্রাক্ট এখানে কী, আমি এখানে ত্রুটি পাচ্ছি, ভিভাটওয়ার্ডস স্ট্রাক্ট অঘোষিত
মহেশ বাবু

1

আপনি এটি সাধারণভাবে xib বা ফ্রেমটি প্রোগ্রামিকভাবে সেট করতে পারবেন না তবে আপনি যদি এটির প্যারেন্ট এক্সিবকে উত্স হিসাবে খোলেন এবং সেখান থেকে উচ্চতা পরিবর্তন করেন তবে এটি কাজ করে pick পিকেরভিউ অন্তর্ভুক্ত থাকা এক্সবিটিতে ক্লিক করুন, পিকরভিউ অনুসন্ধান করুন এবং আপনি উচ্চতা, প্রস্থ ইত্যাদি খুঁজে পেতে পারেন ight সেই ট্যাগটিতে, সেখানে উচ্চতা পরিবর্তন করুন এবং ফাইলটি সংরক্ষণ করুন save

<pickerView contentMode="scaleToFill" id="pai-pm-hjZ">
                                    <rect key="frame" x="0.0" y="41" width="320" height="100"/>
                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                    <connections>
                                        <outlet property="dataSource" destination="-1" id="Mo2-zp-Sl4"/>
                                        <outlet property="delegate" destination="-1" id="nfW-lU-tsU"/>
                                    </connections>
                                </pickerView>

0

আমি যতদূর জানি, ইউআইপিকারকার ভিউ সঙ্কুচিত করা অসম্ভব। আমি আসলে কোনও সংক্ষিপ্ততর কোথাও ব্যবহার করতে দেখিনি। আমার ধারণা হ'ল তারা যদি এটি সঙ্কুচিত করতে পরিচালিত করেন তবে এটি একটি কাস্টম বাস্তবায়ন ছিল।


আপনি ইউপিকেরভিউটিকে অনুভূমিকভাবে আকার দিতে পারেন, তবে আপনি যদি এটি খুব কম সেট করেন তবে এটি ভিজ্যুয়াল গ্লিটস সৃষ্টি করবে।
ভবিষ্যতলাইট 7

0

আপনি যদি আইবিতে আপনার বাছাইকারী তৈরি করতে চান, আপনি এটি আরও ছোট আকারে পোস্ট-আকার দিতে পারেন। এটি এখনও সঠিকভাবে আঁকছে কিনা তা পরীক্ষা করে দেখুন, কারণ এমন একটি পয়েন্ট আসে যেখানে এটি জঘন্য দেখাচ্ছে।


0

সুইফট : আপনাকে ক্লিপ সীমানায় একটি সংক্ষিপ্তসার যুক্ত করতে হবে

    var DateView = UIView(frame: CGRectMake(0, 0, view.frame.width, 100))
    DateView.layer.borderWidth=1
    DateView.clipsToBounds = true

    var myDatepicker = UIDatePicker(frame:CGRectMake(0,-20,view.frame.width,162));
    DateView.addSubview(myDatepicker);
    self.view.addSubview(DateView)

এটি ভিউ কন্ট্রোলারের শীর্ষে একটি ক্লিপড 100 উচ্চতার তারিখ চয়নকারী যুক্ত করা উচিত।


0

আমার কৌশল: ডেটপিকারকে কিছু অংশ দৃশ্যমান করতে ডেটপিকারের মুখোশ স্তরটি ব্যবহার করুন। যেমন আপনি দেখতে ঠিক ঠিক ডেটপিকের ফ্রেম পরিবর্তন করেন।

- (void)timeSelect:(UIButton *)timeButton {
UIDatePicker *timePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 550)];
timePicker.backgroundColor = [UIColor whiteColor];
timePicker.layer.mask = [self maskLayerWithDatePicker:timePicker];
timePicker.layer.masksToBounds = YES;
timePicker.datePickerMode = UIDatePickerModeTime;
[self.view addSubview:timePicker];
}

- (CALayer *)maskLayerWithDatePicker:(UIDatePicker *)datePicker {
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, datePicker.width*0.8, datePicker.height*0.8) cornerRadius:10];
shapeLayer.path = path.CGPath;
return shapeLayer;
}

0

আমি এটির প্রদর্শন আকার পরিবর্তন করতে একটি মাস্ক স্তর ব্যবহার করি

// swift 3.x
let layer = CALayer()
layer.frame = CGRect(x: 0,y:0, width: displayWidth, height: displayHeight)
layer.backgroundColor = UIColor.red.cgColor
pickerView.layer.mask = layer

0

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


0

উপরে উল্লিখিত হিসাবে UIPickerViewএখন আকার পরিবর্তনযোগ্য। আমি কেবল এটি যুক্ত করতে চাই যদিও আপনি যদি কোনও টেবিল ভিউ সেলটিতে পিকরভিউয়ের উচ্চতা পরিবর্তন করতে চান তবে উচ্চতা অ্যাঙ্করকে একটি ধ্রুবকটিতে সেট করার সাথে আমার কোনও সাফল্য হয়নি। যাইহোক, ব্যবহার lessThanOrEqualToConstantকরে কাজ মনে হচ্ছে।

 class PickerViewCell: UITableViewCell {

    let pickerView = UIPickerView()

    func setup() {

        // call this from however you initialize your cell

        self.contentView.addSubview(self.pickerView)
        self.pickerView.translatesAutoresizingMaskIntoConstraints = false

        let constraints: [NSLayoutConstraint] = [
            // pin the pickerView to the contentView's layoutMarginsGuide

            self.pickerView.leadingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.leadingAnchor),
            self.pickerView.topAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.topAnchor),
            self.pickerView.trailingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.trailingAnchor),
            self.pickerView.bottomAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.bottomAnchor),

            // set the height using lessThanOrEqualToConstant
            self.pickerView.heightAnchor.constraint(lessThanOrEqualToConstant: 100)
        ]

        NSLayoutConstraint.activate(constraints)
     }

 }

-1

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

যেহেতু আমরা ইউআইডিটপিকার পুনরুদ্ধার করছি তাই আমাদের একটি উদাহরণের পরিবর্তনশীল দরকার যা নির্বাচিত তারিখের মানটি রাখবে। নীচের কোডগুলি আইওএস ৪.০ এ পরীক্ষা করা হয়েছে।

    @interface AdvanceDateViewController : UIViewController<UIPickerViewDelegate> {
        UIDatePicker *datePicker;
        NSDate *date;
    }


    @property (nonatomic, retain) UIDatePicker *datePicker;
    @property (nonatomic, retain) NSDate *date;

    -(void)resizeViewWithOrientation:(UIInterfaceOrientation) orientation;

    @end

    @implementation AdvanceDateViewController
    @synthesize datePicker, date;

    - (void)viewDidLoad {
      [super viewDidLoad];
          [self resizeViewWithOrientation:self.interfaceOrientation];
    }


    -(void)viewWillAppear:(BOOL)animated{
         [super viewWillAppear:animated];
         [self resizeViewWithOrientation:self.interfaceOrientation];
     }

     - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
         return YES;
     }

     -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
      [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
      [self resizeViewWithOrientation:toInterfaceOrientation];
      }

     -(void)resizeViewWithOrientation:(UIInterfaceOrientation) orientation{
          [self.datePicker removeFromSuperview];
          [self.datePicker removeTarget:self action:@selector(refreshPickupDate) forControlEvents:UIControlEventValueChanged];
          self.datePicker = nil;

          //(Re)initialize the datepicker, thanks to Apple's buggy UIDatePicker implementation
          UIDatePicker *dummyDatePicker = [[UIDatePicker alloc] init];
          self.datePicker = dummyDatePicker;
          [dummyDatePicker release];

          [self.datePicker setDate:self.date animated:YES];
          [self.datePicker addTarget:self action:@selector(refreshPickupDate) forControlEvents:UIControlEventValueChanged];

          if(UIInterfaceOrientationIsLandscape(orientation)){
                 self.datePicker.frame = CGRectMake(0, 118, 480, 162);    
           } else {
                 self.datePicker.frame = CGRectMake(0, 200, 320, 216);
           }

           [self.view addSubview:self.datePicker];
           [self.view setNeedsDisplay];
      }

      @end

-1
stockPicker = [[UIPickerView alloc] init];
stockPicker.frame = CGRectMake(70.0,155, 180,100);

আপনি যদি ইউআইপিকারভিউয়ের আকারটি সেট করতে চান তবে। উপরের কোডটি অবশ্যই আপনার জন্য কাজ করবে।


-1

আইওএস 5.0 এ, আমি নিম্নলিখিত কাজগুলি করতে পেয়েছি:

UIDatePicker *picker = [[UIDatePicker alloc] init];
picker.frame = CGRectMake(0.0, 0.0, 320.0, 160.0);

ল্যান্ডস্কেপ মোডে একটি নতুন ইভেন্ট তৈরি করার সময় এটি ক্যালেন্ডার অ্যাপ্লিকেশনে ব্যবহার করে এমন একটি তারিখ চয়নকারী তৈরি করেছে। (5 এর পরিবর্তে 3 টি সারি উচ্চ)। আমি যখন initWithFrame:পদ্ধতির মধ্যে ফ্রেমটি সেট করি তখন এটি কাজ করে না, তবে এটি আলাদা পদ্ধতি ব্যবহার করে সেট করার সময় এখনও কাজ করে।


-1

আইওএস 5 এর জন্য:

আপনি যদি ইউআইপিকারকার ভিউ প্রোটোকল রেফারেন্সটি একবার দেখুন

তুমি খুঁজে পাবে

 pickerView:rowHeightForComponent:
 pickerView:widthForComponent:

আমি মনে করি আপনি প্রথম সন্ধান করছেন


pickerView:rowHeightForComponent:প্রতিটি সারিটির উচ্চতা নির্ধারণের জন্য প্রতিনিধি পদ্ধতিটি - চয়নকারী দৃশ্যের উচ্চতা নয়।
17:53 এ turestested
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.