আইফোন / আইপ্যাড: কীভাবে স্ক্রিনের প্রস্থ প্রোগ্রামে পাবেন?


83

হাই আমি ভাবছি প্রোগ্রাম থেকে প্রস্থটি পাওয়ার কোনও উপায় আছে কিনা।

আমি আইফোন 3 জিএস, আইফোন 4, আইপ্যাডের জন্য যথেষ্ট সাধারণ কিছু সন্ধান করছি। এছাড়াও, ডিভাইসটি প্রতিকৃতি বা ল্যান্ডস্কেপ (আইপ্যাডের জন্য) এর ভিত্তিতে প্রস্থের পরিবর্তন করা উচিত।

কেহ এই কিভাবে করতে হবে তা জানি?? আমি কিছুক্ষণ খুঁজছিলাম ... ধন্যবাদ!


পর্দার প্রস্থ, উপলব্ধ অ্যাপ্লিকেশন জায়গার প্রস্থ (সিস্টেম বার ব্যতীত) বা আপনি যে নির্দিষ্ট দৃষ্টির সন্ধান করছেন তা প্রস্থ কি?
VdesmedT

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

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

@ ড্রুস্টেফেন্স নীচে আমার উত্তরটি দেখুন যা অ্যাকাউন্টের অভিমুখীকরণের জন্য গ্রহণ করে এবং কোডের মাত্র 3 টি লাইন: ডি।
স্মরণে

উত্তর:


204

ইউআইএস স্ক্রিনে একবার দেখুন ।

যেমন

CGFloat width = [UIScreen mainScreen].bounds.size.width;

আপনি যদি স্ট্যাটাস বারটি অন্তর্ভুক্ত না করতে চান তবে অ্যাপ্লিকেশন ফ্রেম সম্পত্তিটি দেখুন (প্রস্থকে প্রভাবিত করবে না)।

আপডেট: এটি ইউআইএস স্ক্রিন (-বাউন্ডস বা-অ্যাপ্লিকেশন ফ্রেম) চালু করে বর্তমান ইন্টারফেস ওরিয়েন্টেশনকে বিবেচনায় নেয় না। আরও সঠিক পদ্ধতির জন্য আপনার ইউআইভিউয়ের সীমানার জন্য জিজ্ঞাসা করা হবে - ধরে নেওয়া এই ইউআইভিউটি এর ভিউ নিয়ামক দ্বারা স্বয়ংক্রিয়ভাবে ঘোরানো হয়েছে।

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    CGFloat width = CGRectGetWidth(self.view.bounds);
}

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


4
আসলে, যখন আইপ্যাডটি ওরিয়েন্টেড ল্যান্ডস্কেপ হয় তখন এটি কাজ করে না .. অর্থাত্ যদি আমার সিমুলেটরটি ল্যান্ডস্কেপ চালাচ্ছে তবে এটি এখনও 768 (1024 এর পরিবর্তে) ফিরে আসবে। আপনি কি মনে করেন যে আমার যদি একটি বিবৃতি থাকা উচিত যা সেই ক্ষেত্রে দিকনির্দেশ পরীক্ষা করে বা প্রস্থ পাওয়ার আরও ভাল উপায় আছে?
শাই UI

অভিশাপ - আপনার মত লুকস সঠিক; আমি আমার উত্তরটি আরও কিছু ধারণার সাথে আপডেট করেছি।
অ্যালান রজার্স

আমি স্রেফ "সিজিএফ্লোট প্রস্থ = সিজিআরেক্টগেটউইথ (সেল্ফ.ভিউ.বাউন্ডস) ব্যবহার করে শেষ করেছি;" আমার পদ্ধতিতে (didRotateFromInterfaceOrientation এর দরকার নেই) ... সুতরাং কমপক্ষে স্ব.উইউভিউ.বাউন্ডগুলি অ্যাকাউন্টের ওরিয়েন্টেশনটিতে নেয়। ধন্যবাদ !!
শাই UI

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

আইওএস 6 এর ক্ষেত্রে এবং আমরা যখন মডেল কন্ট্রোলার ব্যবহার করি, তখন ডিআরোটেটফ্রোমআইন্টারফেস ওরিয়েন্টেশন ডাকা হবে না
কৃষ্ণন

12
CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
//Bonus height.
CGFloat height = CGRectGetHeight(screen);


6

এটি কোডের 3 লাইনে করা যেতে পারে :

// grab the window frame and adjust it for orientation
UIView *rootView = [[[UIApplication sharedApplication] keyWindow] 
                                   rootViewController].view;
CGRect originalFrame = [[UIScreen mainScreen] bounds];
CGRect adjustedFrame = [rootView convertRect:originalFrame fromView:nil];

4
এটি নিকটে, তবে যদি কোনও ইউআইএলআর্টভিউ প্রদর্শিত হয় তবে এটি মূল উইন্ডো হবে এবং এর রুটভিউ কনট্রোলার সম্পত্তিটি শূন্য হবে
ম্যাট বেজার্ক

@ ম্যাটবেজার্ক ট্রু আমি যদিও এটি একটি কোণার ক্ষেত্রে বিবেচনা। রুট ভিউ পাওয়ার বিকল্প রয়েছে - এটির মতো পরিষ্কার নয়, তবে কেউ আগ্রহী হলে বিকল্পটি পোস্ট করব।
স্মরণ কর

@ পার্টিতে কিছুটা দেরি করবেন তবে আমি আপনার বিকল্প সমাধানে আগ্রহী হব :)
আলেক্সগোফেরিক্স

0

আইওএস 9.0 হিসাবে নির্ভরযোগ্যভাবে ওরিয়েন্টেশন পাওয়ার কোনও উপায় নেই। আমি কেবল প্রতিকৃতি মোডের জন্য ডিজাইন করেছি এমন অ্যাপ্লিকেশনটির জন্য আমি এই কোডটি ব্যবহার করেছি, তাই যদি অ্যাপটি ল্যান্ডস্কেপ মোডে খোলা হয় তবে এটি এখনও সঠিক হবে:

screenHeight = [[UIScreen mainScreen] bounds].size.height;
screenWidth = [[UIScreen mainScreen] bounds].size.width;
if (screenWidth > screenHeight) {
    float tempHeight = screenWidth;
    screenWidth = screenHeight;
    screenHeight = tempHeight;
}



-2

এখানে স্ক্রিনের আকারগুলি পাওয়ার এক দ্রুত উপায়, এটি বর্তমান ইন্টারফেস ওরিয়েন্টেশনটিকে অ্যাকাউন্টেও নেয়:

var screenWidth: CGFloat {
    if UIInterfaceOrientationIsPortrait(screenOrientation) {
        return UIScreen.mainScreen().bounds.size.width
    } else {
        return UIScreen.mainScreen().bounds.size.height
    }
}
var screenHeight: CGFloat {
    if UIInterfaceOrientationIsPortrait(screenOrientation) {
        return UIScreen.mainScreen().bounds.size.height
    } else {
        return UIScreen.mainScreen().bounds.size.width
    }
}
var screenOrientation: UIInterfaceOrientation {
    return UIApplication.sharedApplication().statusBarOrientation
}

এগুলিকে এতে একটি স্ট্যান্ডার্ড ফাংশন হিসাবে অন্তর্ভুক্ত করা হয়েছে:

https://github.com/goktugyil/EZSwiftExtensions

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