ল্যান্ডস্কেপ মোডে আইফোন অ্যাপ্লিকেশন, ২০০৮ সিস্টেম


98

দয়া করে মনে রাখবেন যে এই প্রশ্নটি ২০০৮ সালের এবং এখন কেবল historicতিহাসিক আগ্রহের।


ডিভাইসের অবস্থান নির্বিশেষে কোনও আইফোন অ্যাপ্লিকেশন তৈরির সর্বোত্তম উপায় যা শুরু থেকেই ল্যান্ডস্কেপ মোডে চলে?

প্রোগ্রামগতভাবে এবং ইন্টারফেস বিল্ডার ব্যবহার উভয়ই।


4
ভবিষ্যতের যে কোনও পাঠকের জন্য, দয়া করে নোট করুন যে এই বিখ্যাত সমস্যাটি এখন ২০১১ সালের হিসাবে অ্যাপল দ্বারা সলভ হয়েছে below নীচের উত্তরে পরীক্ষা প্রকল্পটি নোট করুন।
ফ্যাটি

উত্তর:


47

Histতিহাসিক উত্তর মাত্র। দর্শনীয়ভাবে তারিখের বাইরে।

দয়া করে মনে রাখবেন যে এই উত্তরটি এখন বিশাল আকারের / পুরানো

এই উত্তরটি কেবল একটি .তিহাসিক কৌতূহল


উত্তেজনাপূর্ণ খবর! নীচে অ্যান্ড্রু দ্বারা আবিষ্কার করা হিসাবে, এই সমস্যাটি অ্যাপল দ্বারা 4.0++ এ স্থির করা হয়েছে।

এটি প্রদর্শিত হবে যে প্রতিটি দৃশ্যে দৃশ্যের আকারকে জোর করা দরকার এখন আর প্রয়োজন নেই এবং আড়াআড়িটির নির্দিষ্ট গুরুতর সমস্যা "কেবলমাত্র প্রথমবারের কাজ করা" সমাধান করা হয়েছে।

এপ্রিল ২০১১ পর্যন্ত, 4.0 এর নীচে কিছু পরীক্ষা করা বা এমনকি তৈরি করা সম্ভব নয়, সুতরাং প্রশ্নটি নিখুঁতভাবে একটি historicতিহাসিক কৌতূহল। এটি এতদিন ধরে বিকাশকারীদের কতটা সমস্যায় ফেলেছিল তা অবিশ্বাস্য!


এখানে আসল আলোচনা এবং সমাধান। এটি এখন একেবারেই অপ্রাসঙ্গিক, কারণ এই সিস্টেমগুলি এমনকি অপারেশনযোগ্যও নয়।


এই কাজটি সম্পূর্ণরূপে করা অত্যন্ত স্বাচ্ছন্দ্য - কমপক্ষে তিনটি সমস্যা / বাগ রয়েছে।

এটি চেষ্টা করুন .. ইন্টারফেস বিল্ডার ল্যান্ডস্কেপ ডিজাইন

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

আশা করি এটি এই দুঃস্বপ্নে সহায়তা করবে!

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

অন্য কথায়, আইওএসে একটি প্রধান জানা বাগের কারণে:

[window addSubview:happyThing.view];
[window makeKeyAndVisible];

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


4
আমি বিশ্বাস করি এটি 4.x এ স্থির হয়েছে। আমরা এমন একটি গেম প্রেরণ করেছি যা বিভিন্ন স্ক্রিনের একটি গুচ্ছ, কিছু ল্যান্ডস্কেপ এবং কিছু প্রতিকৃতি ছিল এবং এটি কেবল 3.x তে কাজ করে নি। এটি পরিচালনা করার জন্য অতিরিক্ত ডামি ভিউতে উঠতে চাইনি, এর পরিবর্তে আমাদের 4.x প্রয়োজন - যা এই প্রশ্নটি জিজ্ঞাসা করার এক বছর পরে সম্ভবত ঠিক আছে।
অ্যান্ড্রুএস

আমরা "সর্বদা ল্যান্ডস্কেপ" করি না বরং বিভিন্নভাবে ল্যান্ডস্কেপ বা প্রতিকৃতি করি। প্রতিটি উপাচার্য সরাসরি উইন্ডো থেকে যুক্ত এবং সরানো হয়। অ্যাপ ল্যান্ডস্কেপ চালু করে, বেশ কয়েকটি স্ক্রিন ট্রানজিশনের মাধ্যমে সেভাবেই থাকে। আমরা একটি ডামি ভিউ ব্যবহার করি না, তবে আমরা প্রতিটি স্ক্রিনে কাঁধের ওজনরাইড করি। স্পর্শ থেকে প্যাড থেকে ফোনে 4.x এ কোনও সমস্যা নেই।
অ্যান্ড্রুস

40

অ্যাপল দেব সাইট থেকে:

ল্যান্ডস্কেপ মোডে আপনার অ্যাপ্লিকেশনটি শুরু করতে যাতে স্থিতি দণ্ডটি তত্ক্ষণাত যথাযথ অবস্থানে থাকে, তালিকা 2-তে দেখানো হয়েছে, যথাযথ মান (UIInterfaceOrientationLandPressRight বা UIInterfaceOrientationLandPressLeft) সহ UIInterfaceOrientation কী যুক্ত করতে আপনার তথ্য.প্লেস্ট ফাইলটি সম্পাদনা করুন।

তালিকা 2: ল্যান্ডস্কেপ মোডে আপনার অ্যাপ্লিকেশন শুরু করা

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>

4
এই প্লাসটি আপনার কাঁধের অ্যাটোরোটেটটোইন্টারফেস ওরিয়েন্টেশন পদ্ধতিতে ফিরে আসে (ইন্টারফেসওরিয়েন্টেশন! = UIInterfaceOrientationPortrait); এবং তুমি করে ফেলেছ.
মাইকেল বেহান

4
প্রশ্নটি ল্যান্ডস্কেপ মোডে ডিভাইসটি কীভাবে শুরু করবেন তা জিজ্ঞাসা করে। উত্তরগুলি সেই তথ্য দেয়। এরপরে হ্যান্ডেলিংয়ের বিষয়ে প্রশ্নটিতে উল্লেখ করা হয়নি। +1 মাইকেল
প্রেরর

4
উদ্বেগজনকভাবে, "উত্তর" আসলে ল্যান্ডস্কেপ মোডে ডিভাইসটি শুরু করবে না - !! এটি সম্ভবত অ্যাপলের সমস্ত পরিবেশের একক সর্বাধিক বিখ্যাত বাগ / অসুবিধা। এটি খুব কাজের আইপ্যাড বিকাশকারীদের জন্য একটি বেসিক!
ফ্যাটি

@mbehan- এ রয়েছে ইউআইআইন্টারফেস ওরিয়েন্টেশনপোর্ট্রেটআপসাইডডাউন, অতএব ঠিক করা হয়নি। অতিরিক্তভাবে, .লিস্টে ইউআইআইন্টারফেস ওরিয়েন্টেশন কেবলমাত্র 3.1+-তে সমর্থিত, 3.1.3-এবং আরও পুরানো ডিভাইসে নয় (এবং মনে রাখবেন আইফোন 2 জি সেই সংস্করণটিতে আটকে আছে)।
ইভান ভুইকা

28

সমস্ত পোস্ট থেকে সংক্ষিপ্তসার এবং সংহতকরণ, এটি নিজে পরীক্ষা করার পরে; নীচে 4.x, 5.x এর জন্য আপডেটটি দেখুন।

৩.২ হিসাবে আপনি কোড থেকে চলমান অ্যাপ্লিকেশনটির ওরিয়েন্টেশন পরিবর্তন করতে পারবেন না।

তবে আপনি একটি স্থির অরিয়েন্টেশন দিয়ে একটি অ্যাপ্লিকেশন শুরু করতে পারেন, যদিও এটি করা সহজ নয়।

এই রেসিপি দিয়ে চেষ্টা করুন:

  1. আপনার স্থিতিবিন্যাস নির্ধারণ করে UISupportedInterfaceOrientationsমধ্যে Info.plistফাইল
  2. আপনার উইন্ডোতে একটি 480x320 "বেস ভিউ কন্ট্রোলার" নির্ধারণ করুন। অন্য প্রতিটি দর্শন তার দর্শনটিতে একটি সংক্ষিপ্তসার হিসাবে যুক্ত করা হবে।
  3. সমস্ত দৃশ্যে নিয়ন্ত্রকগুলি shouldAutorotateToInterfaceOrientation:পদ্ধতিটি সেট আপ করে (অবশ্যই আপনি প্লাস্টে সংজ্ঞায়িত একই মানটি ফেরত দিতে)
  4. সমস্ত দৃশ্যে কন্ট্রোলারগুলির সাথে একটি ব্যাকগ্রাউন্ড ভিউ সেট করে

    self.view.frame = CGRectMake(0, 0, 480, 320)

    মধ্যে viewDidLoadপদ্ধতি।

আপডেট (আইওএস 4.x, 5.x) : অ্যাপল আইওএস অ্যাপ্লিকেশন প্রোগ্রামিং গাইডের "অ্যাডভান্সড অ্যাপ ট্রিকস" অধ্যায়টিতে "ল্যান্ডস্কেপ মোডে লঞ্চিং" অনুচ্ছেদ রয়েছে।

তথ্যসূত্র:


4
আমি নিশ্চিত করতে পারি এটিই একমাত্র সত্যিকারের কার্যক্ষম সমাধান (একটি ছোট সংযোজন সহ)। এটি খুঁজে পেতে এবং মূল্যায়ন করতে আমার কয়েক ঘন্টা সময় লেগেছে। অন্যান্য সমস্ত উত্তরই সমস্যার আংশিক সমাধান।
জোহানেস রুডলফ

8

প্রথমে আমি তথ্য.প্লেস্টে সেট করি

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>

তারপরে আমি এই কোডটি অ্যাপ্লিকেশনটিতে রেখেছিডফিনিশলঞ্চিং:

CGAffineTransform rotate = CGAffineTransformMakeRotation(1.57079633);
[window setTransform:rotate];

CGRect contentRect = CGRectMake(0, 0, 480, 320); 
window.bounds = contentRect; 
[window setCenter:CGPointMake(160.0f, 240.0f)]; 

এইভাবে আমি ল্যান্ডস্কেপ মোডে ইন্টারফেস বিল্ডারে ভিউটিতে কাজ করতে পারি।


7

ssb এর এবং মাইকেল চালকের উত্তরটি সঠিক বলে মনে হচ্ছে তবে এটি যদি আপনার পক্ষে কাজ করে না, তবে এই বিকল্পটি ব্যবহার করে দেখুন:

- (void)applicationDidFinishLaunchingUIApplication *)application {
    application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
}

বা এই এক:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

বা এই এক:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

আপনাকে window makeKeyAndVisible;প্রথমে কল করতেও হতে পারে ।

কয়েকটি লিঙ্ক: ল্যান্ডস্কেপ মোডে উন্নয়নশীল , আইফোন এসডিকে: কীভাবে কেবল ল্যান্ডস্কেপ মোডকে জোর করবেন?

@ রবার্ট: দয়া করে আইফোন এসডিকে, এনডিএ এবং স্ট্যাক ওভারফ্লো দেখুন


6

আমি অবাক হয়েছি এখনও কেউ এই উত্তরটি নিয়ে আসে নি:

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

একটি পটভূমির জন্য একটি ইউআইআইমেজভিউ দিয়ে একটি ডামি ইউআইভিউউকন্ট্রোলার তৈরি করুন। আপনার অ্যাপ্লিকেশনটি স্টার্টআপে ব্যবহার করে এমন চিত্রটি ডিফল্ট.png এ সেট করুন।

viewWillAppearআপনার রুট ভিউ কন্ট্রোলারে যখন ডাকা হয় তখন অ্যানিমেশন ছাড়াই ডামি ভিউ কন্ট্রোলারটি উপস্থাপন করুন।

viewDidAppearআপনার ডামি ভিউ কন্ট্রোলারে যখন ডাকা হয়, তখন একটি দুর্দান্ত ক্রস দ্রবীভূত অ্যানিমেশন দিয়ে ভিউ কন্ট্রোলারকে বরখাস্ত করুন।

কেবল এই কাজটিই করে না, তবে এটি দুর্দান্ত দেখাচ্ছে! বিটিডাব্লু, কেবলমাত্র স্পষ্টতার জন্য আমি রুট ভিউ কন্ট্রোলারের viewWillAppearমতো এটি করি:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}

5

সর্বশেষতম আইফোন ওএস প্রোগ্রামিং গাইডটিতে স্যাম্পল কোড সহ একটি সম্পূর্ণ বিভাগ রয়েছে। আমি নিশ্চিত এটি সাম্প্রতিক সংযোজন, তাই সম্ভবত আপনি এটি মিস করেছেন। এটি আপনাকে যে সমস্ত শর্ত মেনে চলতে হবে তা ব্যাখ্যা করে; মূলত ...

  • তথ্য.পলিট বৈশিষ্ট্য সেট করুন (এটি স্ট্যাটাস বারের অবস্থান পরিবর্তন করে, তবে ভিউটি নয়)
  • আপনার ইউআইভিউউকন্ট্রোলার ভিউডিডলড: পদ্ধতি বা আপনার অ্যাপ্লিকেশনডিডফিনিশল্যাঞ্চিং: পদ্ধতিটি বা স্বয়ংক্রিয় ঘূর্ণন প্রয়োগ করুন ("স্বয়ংক্রিয়করণ আচরণগুলি", পৃষ্ঠা 124)

"ল্যান্ডস্কেপ মোডে চালু করা", পৃষ্ঠা 102 এর সন্ধান করুন।


4

এই উত্তরটি দেখুন: কেবলমাত্র আইফোন বা আইপ্যাডের জন্য ল্যান্ডস্কেপ মোড

  1. প্লাস্টে ওরিয়েন্টেশন যুক্ত করুন
  2. shouldAutorotateToInterfaceOrientation = সব ফাইলগুলিতে YES

আপনি যদি মিশ্র মোডগুলি ব্যবহার করেন তবে আপনি ভাল হতে পারেন

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