গোষ্ঠীযুক্ত ইউআইটিএবলভিউ শিরোনামের উচ্চতা কীভাবে পরিবর্তন করবেন?


88

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

এই মুহূর্তে আমার কাছে এই কোডটি রয়েছে:

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

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


4
stackoverflow.com/questions/5441938/… এই লিঙ্কটি দেখুন ...
জিতেন্দ্র

@ জিতেন্দ্রদেওর আমাকে সঠিক দিকনির্দেশনা দেওয়ার জন্য ধন্যবাদ
সার্কিটলেগো

উত্তর:


219

CGFLOAT_MINআপনার পছন্দসই বিভাগের উচ্চতার জন্য 0 এর পরিবর্তে ফিরে আসুন ।

0 প্রদানের ফলে ইউআইটিএবলভিউ একটি ডিফল্ট মান ব্যবহার করে। এটি অননুমোদিত আচরণ। আপনি যদি খুব অল্প সংখ্যক ফিরিয়ে দেন তবে আপনি কার্যকরভাবে শূন্য-উচ্চতার শিরোনাম পাবেন।

সুইফট 3:

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

দ্রুত:

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if section == 0 {
        return CGFloat.min
    }
    return tableView.sectionHeaderHeight
}

ওবজ-সি:

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

8
সুইফটে, 'CGFLOAT_MIN' অনুপলব্ধ: পরিবর্তে CGFloat.min ব্যবহার করুন।
Tounaobun

4
সিজিফ্লোয়াট.মিন একটি ক্র্যাশ ঘটায়, কারণ সিজিফ্লাট.মিন -0.00000000000011 এর মতো নেতিবাচক মান ফেরায়
পাভেল গাতিলোভ

4
সম্ভবত এটি পেডেন্ট্রি, তবে সিজিফ্লোয়াট.মিন খুব কম সংখ্যক নয়, এটি একটি খুব বড় নেতিবাচক সংখ্যা। আপনি যদি খুব অল্প সংখ্যক চান তবে আপনি অ্যাপসিলনটি ব্যবহার করবেন।
অ্যালেক্স পাখি 10

6
সুইফ্ট 3 এ এটিCGFloat.leastNormalMagnitude
ixany

4
পরামর্শ: এই মানটি ব্যবহার estimatedHeightForHeaderInSectionকরবেন না, অ্যাপটি ক্রাশ হবে।
পেড্রো পাওলো

27

আপনি ব্যবহার করেন তাহলে tableViewশৈলী দলবদ্ধ , tableViewস্বয়ংক্রিয়ভাবে সেট উপরের এবং নীচের insets। এগুলি এড়াতে এবং অভ্যন্তরীণ পোকামাকড়ের সেটিং এড়ানোর জন্য, শিরোনাম এবং পাদচরণের জন্য ডেলিগেট পদ্ধতিগুলি ব্যবহার করুন। ০.০ কিন্তু কখনই ফিরে আসবেন নাCGFLOAT_MIN

উদ্দেশ্য গ

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    // Removes extra padding in Grouped style
    return CGFLOAT_MIN;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    // Removes extra padding in Grouped style
    return CGFLOAT_MIN;
}

সুইফট

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    // Removes extra padding in Grouped style
    return CGFloat.leastNormalMagnitude
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    // Removes extra padding in Grouped style
    return CGFloat.leastNormalMagnitude
}

আমি অতিরিক্ত ছিল viewForHeaderInSectionসম্পূর্ণরূপে অদৃশ্য হয়ে যাওয়ার জন্য শিরোনামের জন্য ফিরে যেতে
ডোমিনিক সায়ায়ার

19

দেখা যাচ্ছে যে 0 এর উচ্চতা সহ আমি কোনও টেবিল শিরোনামের দৃশ্যটি সেট করতে পারছি না I আমি নিম্নলিখিতটি করে শেষ করেছি:

- (void)viewWillAppear:(BOOL)animated{
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = 1;
    UIView *headerView = [[UIView alloc] initWithFrame:frame];
    [self.tableView setTableHeaderView:headerView];
}

এখানে উচ্চতা নির্ধারণ করা আরও ভাল হবে:- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 1.0f; }
uniruddh

19

এটি সুইফট 4 নিয়ে আমার জন্য কাজ করেছিল । আপনার UITableViewউদাঃ পরিবর্তন করুন viewDidLoad:

// Remove space between sections.
tableView.sectionHeaderHeight = 0
tableView.sectionFooterHeight = 0

// Remove space at top and bottom of tableView.
tableView.tableHeaderView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude)))
tableView.tableFooterView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0, height: CGFloat.leastNormalMagnitude)))

4
লাইফসেভার, এখানে এটি উল্লেখ করার জন্য সময় দেওয়ার জন্য ধন্যবাদ :)
ব্যবহারকারী2672052

13

আপনি এটি চেষ্টা করতে পারেন:

মধ্যে loadView

_tableView.sectionHeaderHeight = 0;

তারপর

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

যতক্ষণ না আপনার শিরোনামে কোনও অবজেক্ট না থাকে ততক্ষণ তা মুছে ফেলা উচিত ...

এবং আপনি যদি বিভাগীয় শিরোনামের কিছু আকার চান তবে কেবলমাত্র ফেরতের মানটি পরিবর্তন করুন।

আপনি যদি বিভাগফুটারটি সরিয়ে না পান তবে একই রকম same

_tableView.sectionFooterHeight = 0;

এবং

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

ওয়েল, এটি iOS7 এর টেবিলভিউ নিয়ে আমার সমস্যার জন্য কাজ করে।


3

আপনি self.tableView.tableHeaderView = [UIView new];যুক্ত করার পরে আপনার কোডটি সরানো উচিত

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

এটি footerউচ্চতা যা আমার ক্ষেত্রে সমস্যা সৃষ্টি করে। সাহায্যের জন্য ধন্যবাদ.
pkc456

2

আপনি যে viewForHeaderInSectionকোনও উচ্চতার সাথে একটি ভিউ ব্যবহার এবং ফিরে আসতে পারেন।

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

    int height = 30 //you can change the height 
    if(section==0)
    {
       UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, height)];

       return view;
    }
}

আমি বিভাগ শিরোনাম সম্পর্কে জিজ্ঞাসা করছি না, টেবিল শিরোনাম।
সার্কিটলগো

তারপরে আপনি টেবিল শিরোনামের দৃশ্যে সরাসরি একটি ইউভিউ পাস করতে পারেন।
দিব্যম শুক্ল


2

সুইফ্ট 4 এ

গোষ্ঠীযুক্ত টেবিলভিউতে অতিরিক্ত শীর্ষ প্যাডিং সরান।

বিভাগের শিরোনামটির জন্য এখানে উচ্চতাটিকে ন্যূনতম উচ্চতা হিসাবে 1 দেওয়া হচ্ছে কারণ শূন্য উচ্চতা নির্ধারিত হলে আপনি সারণীদর্শনটি ডিফল্ট শীর্ষের মার্জিন হিসাবে গ্রহণ করতে পারবেন না।

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

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

0

ফরওয়ার্ডহাইডারইনসেকশনটির উদাহরণ:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 118)];
view.backgroundColor = COLOR_DEFAULT;

NSString* key = [self.tableKeys objectAtIndex:section];
NSArray *result = (NSArray*)[self.filteredTableData objectForKey:key];
SZTicketsResult *ticketResult = [result objectAtIndex:0];

UIView *smallColoredView = [[UIView alloc] initWithFrame:CGRectMake(0, 5, 320, 3)];
smallColoredView.backgroundColor = COLOR_DEFAULT_KOSTKY;
[view addSubview:smallColoredView];

UIView *topBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 8, 320, 40)];
topBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1];
[view addSubview:topBackgroundView];

UILabel *totalWinnings = [[UILabel alloc] initWithFrame:CGRectMake(10, 8, 300, 40)];
totalWinnings.text = ticketResult.message;
totalWinnings.minimumFontSize = 10.0f;
totalWinnings.numberOfLines = 0;
totalWinnings.backgroundColor = [UIColor clearColor];
totalWinnings.font = [UIFont boldSystemFontOfSize:15.0f];
[view addSubview:totalWinnings];

UIView *bottomBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 55, 320, 58)];
bottomBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1];
[view addSubview:bottomBackgroundView];

UILabel *numberOfDraw = [[UILabel alloc] initWithFrame:CGRectMake(10, 55, 290, 58)];
numberOfDraw.text = [NSString stringWithFormat:@"sometext %@",[ticketResult.title lowercaseString]];;
numberOfDraw.minimumFontSize = 10.0f;
numberOfDraw.numberOfLines = 0;
numberOfDraw.backgroundColor = [UIColor clearColor];
numberOfDraw.font = [UIFont boldSystemFontOfSize:15.0f];
[view addSubview:numberOfDraw];

return view;

0

এই দুটি লাইনই যথেষ্ট।

tableView.sectionHeaderHeight = 0
tableView.sectionFooterHeight = 0
    

আমার জন্য এটি Xcode 12.2, iOS 14.2 এ কাজ করছে

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