ইউআইটিএবলভিউয়ের বিভাগগুলির মধ্যে স্থান হ্রাস করা


141

কোনও ইউআইটিএবলভিউয়ের দুটি বিভাগের মধ্যে স্থান হ্রাস করার কোনও উপায় আছে কি? আমার প্রতিটি বিভাগের মধ্যে প্রায় 15 পিক্সেল রয়েছে। আমি ইতিমধ্যে 0 ফেরত দেওয়ার চেষ্টা করেছি -tableView:heightForFooterInSection:এবং এতে -tableView:heightForHeaderInSection:কোনও পরিবর্তন হয় না।

কোনও পরামর্শ?


1
আমি একটি গোষ্ঠীযুক্ত টেবিলভিউ ব্যবহার করছিলাম এবং শিরোনাম / পাদলেখের উচ্চতা সেট করেছিলাম 0.0। তবে এটি 30 ডিফল্ট উচ্চতার একটি ধূসর অঞ্চল দেখাচ্ছে। ব্যবহার 0.0অগ্রহণযোগ্য। আপনি উপরের কোনো মান ব্যবহার করা আবশ্যক 0.0যেমন 0.0001
মধু

যেমন @ মধু বলেছেন 0.0যে কাজ করে না। আমি এখানে একই ইস্যুটির আরও বিশদ উত্তর পেয়েছি: stackoverflow.com/a/22185534/2789144
জেমস নেলসন

উত্তর:


263

এটি কিছুটা জটিল ছিল তবে এই কোডটি ব্যবহার করে দেখুন:

- (CGFloat)tableView:(UITableView*)tableView 
           heightForHeaderInSection:(NSInteger)section {
    if (section == 0) {
        return 6.0;
    }

    return 1.0;
}

- (CGFloat)tableView:(UITableView*)tableView 
           heightForFooterInSection:(NSInteger)section {
    return 5.0;
}

- (UIView*)tableView:(UITableView*)tableView 
           viewForHeaderInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView*)tableView:(UITableView*)tableView 
           viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

সেই অনুযায়ী মান পরিবর্তন করুন। স্থানটি সরাতে, আমি মনে করি 0.0 গ্রহণ করা হবে না। ক্ষুদ্রতম বুদ্ধিমান মানটি 1.0 বলে মনে হয়।


2
ডাবল ফ্লোট বিরোধের কারণে আপনার 5.0 এর পরিবর্তে 5.0f ফিরতে হবে
লিওনস

45
এমনকি আপনি উচ্চতা হিসাবে 0.00001f ফিরে আসতে পারেন এবং আপনি 0 পিক্সেল / পয়েন্টের উচ্চতা পাবেন।
ক্লাস

1
@ ক্লাস যেমন উল্লেখ করেছে, আপনি 0উচ্চতা হিসাবে ব্যবহার করতে পারবেন না - আপনি ডিফল্ট উচ্চতা পাবেন।
জেকেল

26
CGFLOAT_MIN ব্যবহার করবেন না কেন? এটি এই জাতীয় দৃশ্যের জন্য তৈরি হয়েছে :)
আন্ড্রে ফিলিপ

12
যদি CGFloat.leastNonzeroMagnitude
সুইফ্ট

140

যারা 0 পর্যন্ত দূরত্ব সঙ্কুচিত করতে চান তাদের জন্য আপনাকে ব্যবহার করতে হবে:

tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;

কারণ ইউআইটিএবলভিউডেলিগেটের পরিবেশন শূন্যের চেয়ে বড় ফ্লোট থেকে শুরু করে কেবল একটি প্রভাব ফেলে।

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
    return 1.0;
}


-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
    return 1.0;
}

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}

-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
    return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}

(এক্সকোড ৪.০.২ সহ আইওএস ৪.১ ব্যবহার করে)


7
প্রত্যাবর্তন 0.0001; আমার জন্য কাজ করছে। আমি এক্সকোড 4.6 এবং আইওএস 6.1
স্যাম

আমাকে কেবল প্রথম দুটি পদ্ধতিতে সিজিএফএলএফএএলএমএন ফিরিয়ে দিতে হবে এবং এটি দুর্দান্ত কাজ করে।
জুলিয়াস

0 ব্যবহারের পরিবর্তেreturn .leastNormalMagnitude
stan

33

আপনি প্রকৃতপক্ষে আকারের ট্যাবটির অধীনে ইন্টারফেস বিল্ডারে পাদলেখ / শিরোলেখ / সেল উচ্চতা সেট করতে পারেন। ডিফল্টরূপে শিরোনাম / পাদচরণ 10.0 এ সেট করা হয়।


আমি মনে করি আইওএস 5.0 বা আইওএস 6.0 এ জাতীয় আচরণ যুক্ত হয়েছিল তবে হ্যাঁ - গ্রুপগুলির মধ্যে দূরত্ব নির্ধারণ করা এখন অনেক সহজ।
ভ্লাস ভোলোশিন

2
আমি জানি এটি পুরানো তবে আমি মন্তব্য করতে চেয়েছিলাম যে এক্সকোড 5 এবং আইওএস 7 এর মতো, কোডটিতে এটি করা উচিত বলে মনে হচ্ছে। আমি এটিকে ইন্টারফেস বিল্ডারে 0 তে সেট করেছি এবং আমি কোডে 0 এ সেট না করা অবধি এটি 1 এ সেট ছিল
আহমাদ

এক্সকোড 6 এবং আইওএস 8 এর সাথে মনে হচ্ছে স্টোরিবোর্ডে কেবল কনফিগারেশনের সাথে কাজ করছে।
মারে সাগল

সেগুলি ডিফল্টভাবে xcode 7 এ 18 এ সেট করা আছে। তবে এটি এখন পর্যন্ত সবচেয়ে সহজ সমাধান!
স্ট্যাটিক0886

27

আপনাকে বিভাগের শিরোলেখ / পাদলেখের উচ্চতা হ্রাস করতে হবে। তাহলে বিভাগগুলির মধ্যে স্থান হ্রাস করা হবে।

এই কোড চেষ্টা করুন

এটা আমার জন্য কাজ করে :-)

tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;

21

আপনি স্টোরিবোর্ড থেকে বিভাগের পাদচরণ এবং শিরোলেখের উচ্চতাও হ্রাস করতে পারেন। টেবিলভিউতে -> আকার পরিদর্শক। বিভাগ উচ্চতা যান।

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

ডিফল্টরূপে এটি সরল স্টাইল টেবিলের জন্য 22 এবং গোষ্ঠীযুক্ত শৈলী টেবিলের জন্য 10 এ সেট করা আছে। শিরোনাম এবং পাদচরণের জন্য পৃথকভাবে মান বাড়িয়ে / হ্রাস করে আপনি মানগুলি কনফিগার করতে পারেন।


6

আমার জন্য সমস্যাটি ছিল কারণ আমি একটি গোষ্ঠীযুক্ত টেবিল ভিউ শৈলী ( UITableViewStyleGrouped) ব্যবহার করছিলাম । যখন আমি এটিকে একটি সরল স্টাইলে ( UITableViewStylePlain) পরিবর্তন করেছি তখন আমার tableView:heightForHeaderInSection:পদ্ধতিটি কেবলমাত্র প্রতিটি বিভাগের শিরোনামের আকার নির্ধারণ করে।


4

এটি সম্ভবত ব্যবহার করুন, 0 প্রত্যাশার মতো কাজ করবে না

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
     return .leastNormalMagnitude
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNormalMagnitude
}

3

আইওএস 7 এর জন্য আপডেট করুন: এআরসি অটোরিলিজ আপডেটের কারণে, এখানে @ মার্টিন স্টলজ কোড সম্পাদিত।

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return 6;
    return 1.0;
}

-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
    return 5.0;
}

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

(আইওএস 7, এক্সকোড ভি 5.0 ব্যবহার করে)


0

আমার জন্য কেবল এই কোডটি নীচের কোডগুলি ব্যবহার করে সমাধান হয়েছে,

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return section == 0 ? 1 : 20 // 20 is my other sections height
}

প্রথম বিভাগের জন্য 1 রিটার্নিং বিষয়টি সমাধান করেছে।


0

শিরোলেখ / পাদলেখের স্থান পরিবর্তন করতে নিম্নলিখিত পদ্ধতিগুলি প্রয়োগ করতে হবে:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?

এবং

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat

(পাদলেখের উচ্চতা পরিবর্তন করতে অনুরূপ পদ্ধতি ব্যবহার করুন)

নিম্নলিখিত কোডটি বিভাগগুলির চারপাশের স্পেসগুলি পুরোপুরি সরিয়ে দেয়:

public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return nil
}

public func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    return nil
}

public func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNonzeroMagnitude
}

public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return .leastNonzeroMagnitude
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.